pwmd_init() now returns immediately if called more than once.
[libpwmd.git] / NEWS
blob399da1a598eb1301b430a618bd545ec0e7139dab
1 libPWMD v5.0.7
2 --------------
3 There is now a GIT repository allowing anonymous checkouts and a web interface
4 at http://repo.or.cz/w/libpwmd.git. To clone the repository:
6     git clone git://repo.or.cz/libpwmd.git
8     To get the latest changes:
10     git pull
12 Fixed setting the pinentry title string when an invalid password was entered.
14 g++ compile time fix.
17 libPWMD v5.0.6
18 --------------
19 pwmc now sends the LOCK command after opening the data file.
21 Added pwmc command line option -t to specify the pinentry timeout.
23 Requires pinentry 0.7.5 or later when using pwmd_open_nb(). This version uses
24 gpg error codes.
26 pwmd_open() now uses pwmd's pinentry method rather than forking. This makes
27 version 1.11 of pwmd a requirement.
29 pwmd_open_async() now honors PWMD_OPTION_PINENTRY_TRIES.
32 libPWMD v5.0.5
33 --------------
34 Fixed pwmd_process() to make sure all pending data has read.
36 A couple minor bugfixes.
39 libPWMD v5.0.4
40 --------------
41 Added pwmc command line option -i to specify the number of iterations when
42 saving (-S). Requires pwmd v1.9.
45 libPWMD v5.0.3
46 --------------
47 This release is mainly fixes and features for asynchronous clients.
49 Added pwmd_assuan_ctx() to return both the assuan context and socket file
50 descriptor associated with the specified pwm_t handle.
52 Added pwmd_pending_line() which is a wrapper around assuan_pending_line() and
53 assuan_read_line().
55 Don't return an error if the data file is unreadable when pwmd_open() is
56 called.
58 The socket file descriptor is set to block when doing an INQUIRE. Fixes
59 GPG_ERR_EAGAIN being returned from assuan_transact().
61 Fixed status messages when using pwmd_process().
63 Removed assuan.h client dependency.
66 libPWMD v5.0.2
67 --------------
68 Added pwmd_open_async(), pwmd_save_async(), pwmd_process(), pwmd_finalize()
69 and pwmd_async_t. This will replace pwmd_open_nb(), pwmd_open_nb_finalize(),
70 pwmd_save_nb(), pwmd_save_nb_finalize() and pwmd_nb_state_t in a future
71 version. These new functions allow pwmd to use its pinentry method rather than
72 having libpwmd fork() and launch pinentry for nonblocking IO.
74 When DEBUG is defined, a few new command line options are available to pwmc to
75 test password retrieval methods.
78 libPWMD v5.0.1
79 --------------
80 Let pwmc handle the new IMPORT command.
82 Fixed disconnecting pinentry.
84 When the inquire callback returns GPG_ERR_EOF and 'result' is not NULL, send
85 the rest of 'result' before terminating the callback.
88 libPWMD v5.0.0
89 --------------
90 This version breaks backward compatibility and requires pwmd 1.4 or later. The
91 reason is because of how commands that use the INQUIRE response (the "STORE"
92 command) from the server has changed. To do a INQUIRE command, use the new
93 pwmd_inquire() function and not pwmd_command(). The reason for this is to use
94 less memory when large amounts of data is to be sent. The entire data doesn't
95 need to be stored in a buffer before sending. It can be sent ASSUAN_LINELENGTH
96 bytes at a time (~1000) and also removes the one-line-per-command restriction;
97 the data can contain newline characters. See pwmc.c for example usage.
99 Updated to use new pwmd error codes.
101 Fixed pwmd_connect() not setting the error parameter on success.
103 Only one command can be processed with pwmc do to the new INQUIRE code. This
104 removes pwmc command line option -E.
106 Added pwmc command line option -I to read INQUIRE (STORE command) data
107 from the specified file descriptor. Reading from a file descriptor rather from
108 a pipe can save memory when large amounts of data is being sent. See the pwmc
109 manual page for example usage.
111 The result of a pwmc command is not modified at all (newline characters).
113 Send OPTION CLIENT NAME=pwmc when pwmc connects to the server.
115 Server status messages are printed to stderr by default. Use the new command
116 line option -X to suppress status messages.
118 Since pwmd 1.4 includes it's own pinentry support, setting
119 PWMD_OPTION_PINENTRY with pwmd_setopt() will send "OPTION PINENTRY=0" to the
120 server to prevent pwmd from using its pinentry support.
122 Renamed 'configure' option --with-pinentry-path to --with-pinentry.
124 Look for ~/.pwmd/pinentry.conf rather than ~/.pwmd/env. The variable names
125 have also changed. They are now: TTYNAME, TTYTYPE, DISPLAY and PATH.
127 A few bugfixes. See ChangeLog for details.
130 libPWMD v4.0.3
131 --------------
132 Added --with-pinentry-path to configure to set the default location of the
133 pinentry binary. The default is /usr/bin/pinentry.
135 The timeout (if set) is cancelled after pinentry returns since this means
136 input was read.
138 PWMD no longer returns EPWMD_FILE_NOT_FOUND anywhere. It is up to the client
139 to figure out if the file is new or not by using the GETCONFIG protocol
140 command.
142 Added the -d command line switch to pwmc. This will redirect any command
143 output to the specified file descriptor. If your using pinentry to retrieve a
144 password from the same tty as pwmc and redirecting output, this is needed.
146 Added pwmc command line options -D, -T and -N. These can set the pinentry
147 display, tty and terminal type.
149 A couple of minor bugfixes.
152 libPWMD v4.0.2
153 --------------
154 Added gettext support.
156 Don't free the password when set with pwmd_setopt() until pwmd_close() is
157 called. Fixes pwmc -p for example.
159 Fixed pwmc and looping when an error occurs and pinentry is used to get the
160 password.
163 libPWMD v4.0.1
164 --------------
165 FreeBSD compile-time fix.
167 pwmd_open() will return GPG_ERR_TIMEOUT after pwmd_terminate_pinentry() is
168 called.
170 Warn about unused function results at compile-time.
173 libPWMD v4.0.0
174 --------------
175 Fixed gpg-error descriptions. Client's linked to this version of libpwmd
176 should be using pwmd v0.10 or later.
178 Made the pwm_t structure private.
180 Library functions returning PWMD_OK or PWMD_ERROR now are prototyped to return
181 a type of gpg_error_t. This removes the extra needed parameter when calling
182 these functions. When these functions succeed, 0 is returned. Otherwise it's
183 an error code that pwmd_strerror() can describe.
185 Renamed pwmd_option to pwmd_option_t.
187 Added PWMD_OPTION_STATUS_FUNC and PWMD_OPTION_STATUS_DATA. The set function
188 will be called when pwmd sends a status (S) line. The function should return 0
189 on success or a gpg_error_t which will fail the current command with the
190 returned error code.
192 Renamed PWMD_OPTION_[TITLE|PROMPT|DESC] to PWMD_OPTION_PINENTRY_...
194 When using pinentry for password retrieval, PWMD_OPTION_PINENTRY_TRIES can
195 be set to specify the number of times before giving up after an invalid
196 password.
198 The custom memory de/allocator symbols are now hidden.
200 Renamed pwmd_password_func to pwmd_password_fn. A pwm_t * is also a required
201 argument.
203 Renamed pwmd_status_func to pwmd_status_fn.
205 Removed pwmd_get_password(). This has been replaced by pwmd_open_nb() and
206 pwmd_save_nb(). These function's will return a file descriptor that select()
207 can use when a file isn't cached. When available for a read(), a
208 pwmd_nb_status_t should be read and then passed to pwmd_open_nb_finalize() or
209 pwmd_save_nb_finalize() to update the pwm handle. pwmd_open_nb() also has an
210 option to specify the number of seconds until the pinentry process will
211 timeout.
213 Added pwmd_terminate_pinentry() which will kill the pinentry process
214 associated with the specified pwm handle. Use this if you need a pinentry
215 timeout but don't call pwmd_open_nb().
217 Added pwmc command line option -t to specified the pinentry timeout.
219 When a file ~/.pwmd/env exists, it is read before calling pinentry. This file
220 contains NAME=VALUE pinentry settings where NAME is one of TTY, TERM or
221 DISPLAY. These settings will overwrite the ones set by pwmd_setopt(). This
222 allows a daemon process to use pinentry after it's cache entry has been
223 removed.
225 Quite a few API changes and bugfixes. Read libpwmd.3 for details. 
228 libPWMD v3.0.0
229 --------------
230 Now uses the assuan protocol for communicating with pwmd. This changes things
231 quite a bit. Read on...
233 Uses more secure memory allocation. Kinda. It mainly just zero's out what is
234 allocated before free()'ing it.
236 Added pwmd_init(). Call this before anything else.
238 Added pwmd_open() and pwmd_save(). This removes PWMD_OPEN and PWMD_SAVE.
240 Removed PWMD_COMMAND. pwmd_command() now accepts a format string as the
241 command.
243 Added pwmd_free_result(). Use this to free a result from pwmd_command().
245 Removed PWMD_SETOPT. Changed to pwmd_setopt().
247 Added options for setting up the pinentry terminal and display.
249 Added pwmd_get_password(). This is a nonblocking way of calling pinentry. It
250 returns a file descriptor that select() can use to read from when a password
251 is ready to be read from with read() (mostly ripped from Elinks'
252 start_thread()). Thanks Kalle Olavi Niemitalo <kon@iki.fi> for the idea.
254 Now uses libgpg-error error codes.
256 Fixed pwmc and the BYE command.
258 A few other changes. Read the libpwmd.h header file, libpwmd.3 and ChangeLog
259 for all the details.
262 libPWMD v2.0.3
263 --------------
264 Split pwmd and libpwmd into their own packages.
266 Added PWMD_SETOPT options PWMD_OPTION_PASSWORD_FUNC and
267 PWMD_OPTION_PASSWORD_DATA to specify a custom password retrieval function for
268 use with the PWMD_OPEN and PWMD_SAVE commands.
270 gpg-agent(1) is no longer used for interacting with pinentry(1). Now libassuan
271 calls pinentry directly. This adds PWMD_OPTION_PINENTRY_PATH to specify the
272 location of the pinentry program. The default is /usr/bin/pinentry. New
273 programs should use PWMD_OPTION_PINENTRY instead of PWMD_OPTION_USEAGENT and
274 EPWMD_PINENTRY_ERROR instead of EPWMD_AGENT_ERROR.
277 libPWMD v2.0.2
278 --------------
279 Added a manual page.
281 Removed pwmd_list_free(). The prototype disappeared but I forgot to remove the
282 code.
285 libPWMD v2.0.1
286 --------------
287 Restore the working directory after connecting to the socket.
289 Changed the gpg-agent title and description strings in pwmc.
291 Fixed a segfault when looking for the empty string in a result from
292 pwmd_command().
295 libPWMD v2.0.0
296 --------------
297 Most of the PWMD_* commands have been removed. PWMD_OPEN, PWMD_SAVE,
298 PWMD_SETOPT and the new PWMD_COMMAND remain. PWMD_COMMAND takes a char*
299 argument being the protocol command along with any argument to send to the
300 server. This is alot simpler and less error prone than before. Also the
301 library won't need to be updated if a protocol command changed or is added.
303 Fixed PWMD_SAVE and asking for a password when the file was cached.
305 Added pwmc. This is a command line client for pwmd. It reads protocol commands
306 from stdin.
308 Removed pwmd_base64_encode() and pwmd_base64_decode().
310 Added a pkg-config meta file.
313 libPWMD v1.0.1
314 --------------
315 Added PWMD_ATTR_GET to get an attribute value from an element path.
317 pwmd_base64_decode() bugfix. Don't assume the return value is a character
318 array by nul-terminating it.
320 Added pwmd_list_free() to free a "list" result.
322 Can compile with g++ and maybe other C++ compilers.
324 Fixed some memory leaks.
326 Bugfix for the protocol parser.
329 libPWMD v1.0.0
330 --------------
331 Changed the version number as suggested by the libtool docs.
333 pwmd_base64_decode() bugfix. The returned string wasn't NULL terminated.
335 Updates for the OPEN and SAVE protocol commands. libPWMD no longer base64
336 encodes the key.
338 Updates for the new ATTR protocol command.
341 libPWMD v0.0.1
342 --------------
343 Initial release.