3 This version breaks backward compatibility. The reason is because of how
4 commands that use the inquire response ("STORE" command) from the server has
5 changed. This adds a new library option PWMD_OPTION_INQUIRE_FUNC to be set
6 with pwmd_setopt() which is required for use with inquire commands. Also added
7 is option PWMD_OPTION_INQUIRE_DATA which is a user data pointer passed as the
8 first argument to the set callback. See libpwmd(3) for details. The reason is
9 to use less memory when large amounts of data are to be sent. The entire data
10 doesn't need to be stored in a buffer before sending. It can be sent N bytes
11 at a time. It also removes the one-line-per-command restriction; the data can
12 contain newline characters.
14 Updated to use new pwmd error codes. Requires pwmd 1.4 or later.
16 Fixed pwmd_connect() not setting the error parameter on success.
18 A newline character is only appended to the result from pwmc when the result
19 itself doesn't have one AND the output is to a terminal. If output is not to a
20 terminal the result is unmodified.
22 Only one command can be processed with pwmc do to the new INQUIRE code. This
23 removes pwmc command line option -E.
25 Added pwmc command line option -I to read INQUIRE (STORE command) data
26 from the specified file descriptor. Reading from a file descriptor rather from
27 a pipe can save memory when large amounts of data is being sent. See the pwmc
28 manual page for example usage.
30 Server status messages are printed to stderr by default. Use the new command
31 line option -X to suppress status messages.
36 Added --with-pinentry-path to configure to set the default location of the
37 pinentry binary. The default is /usr/bin/pinentry.
39 The timeout (if set) is cancelled after pinentry returns since this means
42 PWMD no longer returns EPWMD_FILE_NOT_FOUND anywhere. It is up to the client
43 to figure out if the file is new or not by using the GETCONFIG protocol
46 Added the -d command line switch to pwmc. This will redirect any command
47 output to the specified file descriptor. If your using pinentry to retrieve a
48 password from the same tty as pwmc and redirecting output, this is needed.
50 Added pwmc command line options -D, -T and -N. These can set the pinentry
51 display, tty and terminal type.
53 A couple of minor bugfixes.
58 Added gettext support.
60 Don't free the password when set with pwmd_setopt() until pwmd_close() is
61 called. Fixes pwmc -p for example.
63 Fixed pwmc and looping when an error occurs and pinentry is used to get the
69 FreeBSD compile-time fix.
71 pwmd_open() will return GPG_ERR_TIMEOUT after pwmd_terminate_pinentry() is
74 Warn about unused function results at compile-time.
79 Fixed gpg-error descriptions. Client's linked to this version of libpwmd
80 should be using pwmd v0.10 or later.
82 Made the pwm_t structure private.
84 Library functions returning PWMD_OK or PWMD_ERROR now are prototyped to return
85 a type of gpg_error_t. This removes the extra needed parameter when calling
86 these functions. When these functions succeed, 0 is returned. Otherwise it's
87 an error code that pwmd_strerror() can describe.
89 Renamed pwmd_option to pwmd_option_t.
91 Added PWMD_OPTION_STATUS_FUNC and PWMD_OPTION_STATUS_DATA. The set function
92 will be called when pwmd sends a status (S) line. The function should return 0
93 on success or a gpg_error_t which will fail the current command with the
96 Renamed PWMD_OPTION_[TITLE|PROMPT|DESC] to PWMD_OPTION_PINENTRY_...
98 When using pinentry for password retrieval, PWMD_OPTION_PINENTRY_TRIES can
99 be set to specify the number of times before giving up after an invalid
102 The custom memory de/allocator symbols are now hidden.
104 Renamed pwmd_password_func to pwmd_password_fn. A pwm_t * is also a required
107 Renamed pwmd_status_func to pwmd_status_fn.
109 Removed pwmd_get_password(). This has been replaced by pwmd_open_nb() and
110 pwmd_save_nb(). These function's will return a file descriptor that select()
111 can use when a file isn't cached. When available for a read(), a
112 pwmd_nb_status_t should be read and then passed to pwmd_open_nb_finalize() or
113 pwmd_save_nb_finalize() to update the pwm handle. pwmd_open_nb() also has an
114 option to specify the number of seconds until the pinentry process will
117 Added pwmd_terminate_pinentry() which will kill the pinentry process
118 associated with the specified pwm handle. Use this if you need a pinentry
119 timeout but don't call pwmd_open_nb().
121 Added pwmc command line option -t to specified the pinentry timeout.
123 When a file ~/.pwmd/env exists, it is read before calling pinentry. This file
124 contains NAME=VALUE pinentry settings where NAME is one of TTY, TERM or
125 DISPLAY. These settings will overwrite the ones set by pwmd_setopt(). This
126 allows a daemon process to use pinentry after it's cache entry has been
129 Quite a few API changes and bugfixes. Read libpwmd.3 for details.
134 Now uses the assuan protocol for communicating with pwmd. This changes things
135 quite a bit. Read on...
137 Uses more secure memory allocation. Kinda. It mainly just zero's out what is
138 allocated before free()'ing it.
140 Added pwmd_init(). Call this before anything else.
142 Added pwmd_open() and pwmd_save(). This removes PWMD_OPEN and PWMD_SAVE.
144 Removed PWMD_COMMAND. pwmd_command() now accepts a format string as the
147 Added pwmd_free_result(). Use this to free a result from pwmd_command().
149 Removed PWMD_SETOPT. Changed to pwmd_setopt().
151 Added options for setting up the pinentry terminal and display.
153 Added pwmd_get_password(). This is a nonblocking way of calling pinentry. It
154 returns a file descriptor that select() can use to read from when a password
155 is ready to be read from with read() (mostly ripped from Elinks'
156 start_thread()). Thanks Kalle Olavi Niemitalo <kon@iki.fi> for the idea.
158 Now uses libgpg-error error codes.
160 Fixed pwmc and the BYE command.
162 A few other changes. Read the libpwmd.h header file, libpwmd.3 and ChangeLog
168 Split pwmd and libpwmd into their own packages.
170 Added PWMD_SETOPT options PWMD_OPTION_PASSWORD_FUNC and
171 PWMD_OPTION_PASSWORD_DATA to specify a custom password retrieval function for
172 use with the PWMD_OPEN and PWMD_SAVE commands.
174 gpg-agent(1) is no longer used for interacting with pinentry(1). Now libassuan
175 calls pinentry directly. This adds PWMD_OPTION_PINENTRY_PATH to specify the
176 location of the pinentry program. The default is /usr/bin/pinentry. New
177 programs should use PWMD_OPTION_PINENTRY instead of PWMD_OPTION_USEAGENT and
178 EPWMD_PINENTRY_ERROR instead of EPWMD_AGENT_ERROR.
185 Removed pwmd_list_free(). The prototype disappeared but I forgot to remove the
191 Restore the working directory after connecting to the socket.
193 Changed the gpg-agent title and description strings in pwmc.
195 Fixed a segfault when looking for the empty string in a result from
201 Most of the PWMD_* commands have been removed. PWMD_OPEN, PWMD_SAVE,
202 PWMD_SETOPT and the new PWMD_COMMAND remain. PWMD_COMMAND takes a char*
203 argument being the protocol command along with any argument to send to the
204 server. This is alot simpler and less error prone than before. Also the
205 library won't need to be updated if a protocol command changed or is added.
207 Fixed PWMD_SAVE and asking for a password when the file was cached.
209 Added pwmc. This is a command line client for pwmd. It reads protocol commands
212 Removed pwmd_base64_encode() and pwmd_base64_decode().
214 Added a pkg-config meta file.
219 Added PWMD_ATTR_GET to get an attribute value from an element path.
221 pwmd_base64_decode() bugfix. Don't assume the return value is a character
222 array by nul-terminating it.
224 Added pwmd_list_free() to free a "list" result.
226 Can compile with g++ and maybe other C++ compilers.
228 Fixed some memory leaks.
230 Bugfix for the protocol parser.
235 Changed the version number as suggested by the libtool docs.
237 pwmd_base64_decode() bugfix. The returned string wasn't NULL terminated.
239 Updates for the OPEN and SAVE protocol commands. libPWMD no longer base64
242 Updates for the new ATTR protocol command.