Version 1.12.
[pwmd.git] / NEWS
blobeba1eec4d6ba1be620d3522d998f3f985ff881fa
1 PWMD v1.12
2 ----------
3 There is now a GIT repository allowing anonymous checkouts and a web interface
4 at http://repo.or.cz/w/pwmd.git. To clone the repository:
6     git clone git://repo.or.cz/pwmd.git
8     To get the latest changes:
10     git pull
12 Fixed a segfault when adding a file to the cache from the command line.
15 PWMD v1.11
16 ----------
17 pwmd now becomes a daemon process (forks into the background) by default. To
18 prevent this use the new -n command line switch.
20 Added support for pinentry timeouts. This adds a new OPTION TIMEOUT protocol
21 command and the new "pinentry_timeout" configuration parameter. These set the
22 number of seconds before the pinentry process is terminated.
24 SIGHUP now reloads the configuration file rather than SIGUSR1 and SIGUSR1 will
25 reset the key cache. Sorry for the switch but I see more applications using
26 SIGHUP for file reloading and I'd like to be conforming.
28 Fixed launching pinentry when DISPLAY is unset.
30 Added configuration parameter "priority" to specify the niceness of pwmd. The
31 default value is inherited from the parent process.
33 Added support for pinentry's password quality meter. You'll need to have
34 cracklib2 installed and pass --enable-quality to ./configure.
37 PWMD v1.10
38 ----------
39 ATTR LIST now separates the attribute name and value with a space rather than
40 a tab.
42 Send LOCKED status messages while waiting for the pinentry mutex.
44 A couple minor cleanups.
47 PWMD v1.9
48 ----------
49 Fixed GETCONFIG showing the "key" and "key_file" parameters. Got broken in the
50 previous release.
52 Added the GETPID command which returns the process ID of pwmd.
54 Fixed terminating a client after it disconnected in the middle of a file mutex
55 lock. Note that while a client is waiting for a file mutex lock, a LOCKED
56 status message will be sent to the client once every second.
58 OPTION ITERATIONS no longer requires an open file and also sends the CONFIG
59 status message when successful.
61 Send both the current iteration and total iterations in the ENCRYPT and
62 DECRYPT status messages. This should make it easier for clients.
64 The "iterations" configuration parameter is updated after a successful OPEN
65 command. This keeps the iteration setting from the file header and can be
66 changed with OPTION ITERATIONS before saving. The "iterations" configuration
67 option is now only useful for new files. The CONFIG status message will be
68 sent to all clients when the file header iterations differs from the
69 configured one. Note that all this only applies to exiting files (OPEN) and
70 not new ones.
72 The GETCONFIG command now converts the configuration parameter to lower case.
75 PWMD v1.8
76 ----------
77 The GETCONFIG command can take a file argument. This lets the client retrieve
78 values for files that aren't opened yet.
80 Added command line option -i to specify the number of encryption iterations
81 when importing. If not specified, the "global" configuration parameter will be
82 used like before.
84 Fixed the "iteration" and "iteration_progress" configuration parameters when
85 used in a file section.
87 Added the CONFIG status message. This is sent when the configuration file is
88 reloaded (SIGUSR1).
90 Added the CLIENTS status message to show how many clients are connected.
92 Removed the cleanup thread. Cleanups now occur immediately after the client
93 thread terminates.
95 Redid how status messages are sent. We now use a pth_msgport_t rather than
96 signals.
98 Added OPTION ITERATIONS to set the encryption iterations for the current file.
99 This will send the CONFIG status message when successful.
102 PWMD v1.7
103 ----------
104 Added the LOCK and UNLOCK commands.
106 $DISPLAY bugfix. Use the --display pinentry command line option.
108 Fixed a xmlError segfault.
111 PWMD v1.6
112 ----------
113 IMPORT command bugfix. It now overwrites the node of the same name as the root
114 node of the content argument.
116 When a client sends OPTION PINENTRY, the option value is valid for the current
117 session only, and not any future sessions of the same file.
120 PWMD v1.5
121 ----------
122 Added the "backup" configuration parameter. When true, the default, a backup
123 of the opened file will be saved in "data_directory" when a SAVE command is
124 sent. The filename will have the ".backup" extension appended to it.
126 Added the XPATH command. This command can retrieve a result of the specified
127 expression or set a value to the result of the specified expression.
129 Added the IMPORT command. This is like STORE but reads real XML data and
130 stores it at the specified element path.
132 A few bugfixes. See ChangeLog for details.
135 PWMD v1.4
136 ----------
137 Ported to libPth2. This fixes key cache locking portability and removes the
138 --disable-locking 'configure' option.
140 Added configuration parameter "syslog" to enable logging to the syslog daemon
141 with facility LOG_DAEMON and priority LOG_INFO.
143 When the key cache changes, send the CACHE status message to each connected
144 client.
146 Reuse libgpg-error error codes more often. If your using libpwmd, please
147 update to libpwmd5 otherwise error codes will be wrong.
149 Added configuration option "keepalive" to specify the interval, in seconds, to
150 send the new KEEPALIVE status message.
152 Added pinentry(1) support. This adds a new configuration parameter
153 "enable_pinentry" (the default is enabled), and a few options that can be set
154 with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE, PROMPT,
155 DESC and PINENTRY. Read COMMANDS for details.
157 Added OPTION CLIENT NAME=VALUE to let clients set a string that is associated
158 with the connection thread ID. This may be useful for debugging log messages.
160 The "iterations" configuration parameter can be set to -1 to disable
161 encryption. Setting to 0, the default, will still encrypt with 1 iteration (I
162 know it doesn't make sense, but it's needed for compatibility with previous
163 data files).
165 Empty (null) keys are now allowed.
167 Changed the "default" configuration file section to "global". Be sure to
168 update your config file(s).
170 A few bug fixes. See ChangeLog for details.
173 PWMD v1.3
174 ----------
175 More safety checks when writing the data file after a SAVE command.
177 Added configuration parameter "socket_perms" to set the permissions of the
178 created socked overriding any umask setting. May be useful if a client
179 other than the user who invoked pwmd needs to connect (i.e., ACL's).
181 Added 'configure' option --disable-locking to disable key cache mutex locking.
182 Some systems don't have a complete pthread_mutex_t data type which is needed
183 rather than a pointer (FreeBSD and others probably). Note that using this
184 option increases the risk of key cache and data file corruption when more than
185 one client is using pwmd at the same time and save to the same file. If
186 possible, upgrade your OS and see if this fixes things.
188 A few bugfixes. See ChangeLog for details.
191 PWMD v1.2
192 ----------
193 Added locking of the file/key cache with certain commands. This prevents other
194 clients from modifying the cache until the lock is released. This adds a new
195 pthread compile time dependency.
197 Zlib version 1.2.2.1 or later is now a requirement.
200 PWMD v1.1
201 ----------
202 Added configuration parameter "recursion_depth". This specifies the maximum
203 number of times to follow a "target" attribute for a single element. The
204 default is 20.
206 When creating a "target" attribute, each element in the element path value is
207 no longer modified with the literal '!' character at all. You need to specify
208 the literal instead. This keeps the syntax more consistent with the other
209 commands.
211 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
212 processed so far, and the total bytes. In order to see the total after
213 upgrading from a previous version you need to save the data file once.
215 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
217 The "disable_mlockall" configuration parameter now defaults to "true". Saves
218 RAM and is overkill for most since each memory deallocation is cleared before
219 being freed. The file cache is still locked in RAM though (if possible).
221 Bugfixes. See ChangeLog for details.
224 PWMD v1.0
225 ----------
226 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
227 if the file exists by using the GETCONFIG command along with 'data_directory'.
229 The CLEARCACHE command will always succeed (return 0) even if the file is not
230 found.
232 A few minor bugfixes.
235 PWMD v0.12
236 ----------
237 Added gettext support. Translations welcome.
239 Strip the first '!' of a newly created element. If there's a following one
240 it's an error. This is to avoid syntax errors and confusion with other
241 commands and element paths.
243 Only show the number of iterations so far when showing the PROGRESS status
244 message. The client can get the percentage by calculating the
245 "iteration_progress" with GETCONFIG.
247 Fixed a huge memory leak with (de)compression.
249 The cache status message format has changed to only show the used and
250 available slots and without any text strings to make it easier for clients to
251 parse.
253 SIGUSR1 is caught in the child process. This allows for reloading of the
254 configuration file.
256 Fixed pushing files and xml import with compression.
258 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
259 to work better this way.
261 Fixed a few memory leaks.
263 Fixed creating invalid XML elements. Elements must not begin with punctuation
264 or digit and not contain any whitespace.
266 The output of the LIST command is no longer sorted. Leave it up to the client.
269 PWMD v0.11
270 ----------
271 Added the GETCONFIG command. This will return a value for a configuration
272 parameter for the opened file or the default value if no file has been opened.
273 The "key" and "key_file" parameters are ignored.
275 Rewrote how element handling is done. No longer uses an xmlTextReader but
276 accesses the xmlDocPtr nodes directly.
278 The STORE command will no longer overwrite the element tree of the last
279 element in the specified element path. Instead it will set the content as
280 usual and keep the child nodes. This affects how GET handles empty elements.
281 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
282 command can also store content in a root element (account) and remove content
283 or store an empty element by not specifying any content after the last TAB in
284 the element path.
286 Each element in an element path can now be prefixed with the literal '!'
287 character. This allows for following targets of elements other than the root
288 element.
290 The LIST command will now shows all reachable elements including target
291 elements for the specified element path. It also prefixes each element with
292 the literal '!' when needed.
294 Added support for compressing data files before encryption. This adds the
295 "compression_level" configuration parameter. The default is 6 and setting to 0
296 will disable.
298 A couple of bug fixes.
301 PWMD v0.10
302 ----------
303 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
304 invalid keys etc. used to return an error code that used
305 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
306 now. This breaks compatibility with clients that make use of the error codes
307 (i.e., libpwmd). Be sure to update.
309 Non-option arguments on the command line are files to cache upon startup. This
310 acts like the 'cache_push' configuration parameter.
312 The location of the default configuration file is now ~/.pwmd/config and the
313 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
314 This fixes clients opening these non-data filenames.
316 Fixed default configuration values when an rcfile doesn't have one.
318 The configuration parameters 'key' and 'key_file' now check to make sure the
319 key is valid before adding it to the cache like 'cache_push' does.
321 Clear the file cache and free the memlist on SIGABRT when debugging is not
322 enabled.
324 Added command line option -b to fork pwmd to the background.
326 Added configuration parameter "iteration_progress". pwmd will send the client
327 a status message showing the percent of iterations that are complete while
328 encrypting or decrypting a data file. The default is 0 which disables sending
329 status messages.
331 Sending SIGUSR1 to pwmd will reload the configuration file.
333 New protocol command REALPATH. This will resolve any "target" attribute for
334 all elements in the specified element path and return the result.
336 Some portability (FreeBSD and maybe others) fixes.
338 SIGTERM and SIGABRT are now properly caught in a child process.
340 Bugfixes.
343 PWMD v0.9
344 ---------
345 Now uses the assuan protocol. This requires libassuan and libgpg-error.
347 Clear the shared memory on exit.
349 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
350 into their own commands removing the CACHE command itself.
352 The RESETCACHE command and the cache_reset_timeout configuration parameter
353 have been removed. The cached files timeout is reset to it's configured value
354 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
356 The OPEN command can open another file using the same connection. Beware
357 though that if the OPEN of the new file fails, no file will be open at all.
359 When OPEN'ing a new file with a specified key, cache both the filename and
360 key. Before you had to SAVE to cache the key.
362 All commands will check if the file has been modified before continueing. Not
363 the cache commands though.
365 Don't unlink() a socket filename that wasn't created by pwmd.
367 Fixed allocating more slots than needed.
369 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
370 unless the element path argument is prefixed with a '!'. The LIST command
371 will support "target" in the next release, hopefully.
373 Accounts names can no longer begin with a '!' character to avoid problems with
374 the "target" attribute.
376 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
377 EPWMD_COMMAND_SYNTAX instead.
379 Added command line option -D and configuration parameter
380 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
381 commands will return EPWMD_EMPTY_ELEMENT.
384 PWMD v0.8
385 ---------
386 Use AM_XML2_PATH() for finding libxml2.
388 Split pwmd and libpwmd into their own projects. Both can be found at
389 http://bjk.sourceforge.net/pwmd/.
392 PWMD v0.7
393 ---------
394 cache_push and working directory bugfix.
396 Added two new configuration options "key" and "key_file". Works with
397 cache_push too.
399 Added a boolean "cache_reset_timeout" configuration option to reset the timer
400 for a cached key when the OPEN or SAVE commands are used.
402 Added two new protocol commands CACHE RESET which clears only the key for the
403 specified file and CACHE RESETALL which clears the key for all files.
405 The "name" and "target" attributes are now case-sensitive.
407 The value of an element path that contains a "target" attribute can be
408 obtained by prefixing the account element with a '!'.
411 PWMD v0.6
412 ---------
413 Fix for the LIST command. When an element path was specified and the document
414 had following elements in the tree the following elements would be shown.
416 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
417 seconds. This adds a new configuration file setting "cache_timeout".
419 Added per-file settings in the configuration file. A file section is declared
420 by placing the filename in braces. Only the "iterations" and "cache_timeout"
421 settings are used in a file section.
423 No longer chdir() to the data directory.
426 PWMD v0.5
427 ---------
428 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
430 Write a structure to the data file which specifies the iterations and IV. This
431 lets you open a file that had a different iteration setting than the current
432 setting. Breaks file compatibility with previous versions for hopefully the
433 last time.
435 cache_push with an invalid password bugfix.
437 Added command line option -I to import an XML file and write the encrypted
438 data to stdout.
441 PWMD v0.4
442 ---------
443 Use AES-256-CBC to store the data file. This breaks file compatibility with
444 older versions. Sorry.
446 The ATTR protocol command has a new GET sub-command to get an attribute value
447 for an element path.
449 The LIST protocol command can now take an element path.
451 The DUMP command will format it's output.
453 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
454 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
455 supports this.
457 Fixed closing file descriptors.
459 Fixed some memory leaks.
461 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
462 before free()ing.
464 Added an "iterations" configuration parameter. This specifies the amount of
465 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
466 aespipe.
469 PWMD v0.3
470 ---------
471 The SETATTR protocol command has been renamed to ATTR. This new command
472 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
473 attribute, DELETE to delete an attribute and LIST to list attributes of an
474 element path. Read PROTOCOL for details.
476 Added the TARGET attribute. If an element has this attribute set, it's value
477 is another element path. It's recursive too so the destination element path
478 can be an element with a TARGET attribute. Be careful of loops though.
480 Added the DUMP protocol command. It shows the in-memory document. Useful for
481 cleaning up empty elements that aren't shown with any command.
483 The "name" attribute can be used in any element but cannot be removed for the
484 root "account" element.
486 More strict element name validation for new elements.
488 Code reorganization. Protocol commands have been put in src/commands.c.
490 The LIST command won't show element values anymore unless DEBUG was defined at
491 compile time. You must use the GET command to get a value.
493 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
494 Plain text is where it's at.
496 The STORE command wont base64 encode the value. We'll leave it up to the
497 client. But it's still recommended to avoid parsing errors.
499 All of the command line options have been moved into a configuration file. By
500 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
501 alternate file. If the file doesn't exist, then some defaults will be used.
502 There is one new config option though; "cache_push" will take a list of
503 filenames as an argument. This will prompt for passwords upon startup and add
504 the file to the cache. It's a (temporary?) fix for background processes that
505 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
506 the other process needs is added to the cache.
509 PWMD v0.2
510 ---------
511 There is a library included in the archive to make interfacing the pwmd alot
512 easier. See libpwmd/README for more information.
514 A (temporary) fix for 100% CPU usage after a client connects.
516 GnuPG is no longer used for data encryption. Instead, libgcrypt will
517 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
518 need the base64 encoded key.
520 Renamed host to hostname and added sslfingerprint to the DTD.
522 Added command line option -s to specify the socket path.
524 Added command line option -d to specify where pwmd will open and save the data
525 files.
527 Renamed protocol command SET to SETATTR.
529 Added shared memory file caching. If a file is found in the cache then the
530 cached password associated with the file will be used with the OPEN command.
531 With SAVE, if there is no cached password a key is required, else the cached
532 password will be used unless there is a key argument. This also adds a new
533 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
534 Sending the SIGHUP signal to pwmd will clear the file cache.
536 Added command line option -M to disable calling mlockall(). mlock() will still
537 be used for the file cache reguardless of this option.
539 Added command line option -C to specify the file cache size. The cache size
540 must be in multiples of PAGE_SIZE.
542 Added command line option -l to enable logging to the specified file.
544 If there is a protocol command error, ERR is returned along with a protocol
545 error code and description. See src/pwmd_error.h for error codes.
547 Fix for the DELETE command and deleting an entire element tree when an invalid
548 element was in the element path.
550 Fix for the GET command and finding elements of the same name in other
551 accounts.
553 Added a manual page.
556 PWMD v0.1
557 ---------
558 Initial release.