Version 1.16.
[pwmd.git] / NEWS
blob237ccb7f037678a33289d14e619cfdb0ddb4b0fc
1 PWMD v1.16
2 ----------
3 "disable_list_and_dump" now affects the XPATH command too.
5 When reloading the configuration file with SIGHUP, "disable_list_and_dump" is
6 no longer modified from the initial value specified at startup.
8 GETCONFIG will now accept the "key" and "key_file" parameters.
10 GETCONFIG will return GPG_ERR_NO_VALUE instead of GPG_ERR_SYNTAX when an
11 unknown or unspecified parameter is requested.
13 GETCONFIG should now work with a UTF8 filename argument.
15 Fixed a potential pinentry segfault and a minor memory leak.
18 PWMD v1.15
19 ----------
20 Since the previous version I've lost some data including the gpg key used to
21 sign the archives and have no way of revoking it. I've generated a new key
22 0xF2B33BEF which will be used for future signings. Key 0x40D5FA7E should be
23 considered revoked.
25 pwmd_strerror() will return gpg_strerror() when the error code isn't related
26 to pwmd. This fixes some error descriptions.
28 Symbolic links are no longer allowed as data files. This prevents backups from
29 being created on different (e.g., non-encrypted) partitions.
31 Fixed checking new elements for whitespace as the first character.
33 Allow unicode filenames. Only '/' and whitespace are rejected.
35 Fixed an important bug when importing an XML file with -I. If no iterations
36 were specified, the output wasn't getting encrypted from the configuration
37 setting.
39 Added command line option -k to specify a keyfile when importing.
41 A few other bug fixes. See ChangeLog for details.
44 PWMD v1.14
45 ----------
46 OPTION TIMEOUT will no longer be considered with the SAVE command. This should
47 be safe because it's normally an interactive command.
49 The keepalive and cache timeout threads aren't terminated until after all
50 clients have exited even after receiving a quit signal.
52 A few bug fixes. See ChangeLog for details.
55 PWMD v1.13
56 ----------
57 Sorry about this second release in the same day but I didn't catch these two
58 bugs until it was too late.
60 Parse ~/.pwmd/pinentry.conf even when adding files from the command line.
62 Fixed an uninitialized variable which may have led to invalid DECRYPT status
63 messages.
66 PWMD v1.12
67 ----------
68 There is now a GIT repository allowing anonymous checkouts and a web interface
69 at http://repo.or.cz/w/pwmd.git. To clone the repository:
71     git clone git://repo.or.cz/pwmd.git
73     To get the latest changes:
75     git pull
77 Fixed a segfault when adding a file to the cache from the command line.
80 PWMD v1.11
81 ----------
82 pwmd now becomes a daemon process (forks into the background) by default. To
83 prevent this use the new -n command line switch.
85 Added support for pinentry timeouts. This adds a new OPTION TIMEOUT protocol
86 command and the new "pinentry_timeout" configuration parameter. These set the
87 number of seconds before the pinentry process is terminated.
89 SIGHUP now reloads the configuration file rather than SIGUSR1 and SIGUSR1 will
90 reset the key cache. Sorry for the switch but I see more applications using
91 SIGHUP for file reloading and I'd like to be conforming.
93 Fixed launching pinentry when DISPLAY is unset.
95 Added configuration parameter "priority" to specify the niceness of pwmd. The
96 default value is inherited from the parent process.
98 Added support for pinentry's password quality meter. You'll need to have
99 cracklib2 installed and pass --enable-quality to ./configure.
102 PWMD v1.10
103 ----------
104 ATTR LIST now separates the attribute name and value with a space rather than
105 a tab.
107 Send LOCKED status messages while waiting for the pinentry mutex.
109 A couple minor cleanups.
112 PWMD v1.9
113 ----------
114 Fixed GETCONFIG showing the "key" and "key_file" parameters. Got broken in the
115 previous release.
117 Added the GETPID command which returns the process ID of pwmd.
119 Fixed terminating a client after it disconnected in the middle of a file mutex
120 lock. Note that while a client is waiting for a file mutex lock, a LOCKED
121 status message will be sent to the client once every second.
123 OPTION ITERATIONS no longer requires an open file and also sends the CONFIG
124 status message when successful.
126 Send both the current iteration and total iterations in the ENCRYPT and
127 DECRYPT status messages. This should make it easier for clients.
129 The "iterations" configuration parameter is updated after a successful OPEN
130 command. This keeps the iteration setting from the file header and can be
131 changed with OPTION ITERATIONS before saving. The "iterations" configuration
132 option is now only useful for new files. The CONFIG status message will be
133 sent to all clients when the file header iterations differs from the
134 configured one. Note that all this only applies to exiting files (OPEN) and
135 not new ones.
137 The GETCONFIG command now converts the configuration parameter to lower case.
140 PWMD v1.8
141 ----------
142 The GETCONFIG command can take a file argument. This lets the client retrieve
143 values for files that aren't opened yet.
145 Added command line option -i to specify the number of encryption iterations
146 when importing. If not specified, the "global" configuration parameter will be
147 used like before.
149 Fixed the "iteration" and "iteration_progress" configuration parameters when
150 used in a file section.
152 Added the CONFIG status message. This is sent when the configuration file is
153 reloaded (SIGUSR1).
155 Added the CLIENTS status message to show how many clients are connected.
157 Removed the cleanup thread. Cleanups now occur immediately after the client
158 thread terminates.
160 Redid how status messages are sent. We now use a pth_msgport_t rather than
161 signals.
163 Added OPTION ITERATIONS to set the encryption iterations for the current file.
164 This will send the CONFIG status message when successful.
167 PWMD v1.7
168 ----------
169 Added the LOCK and UNLOCK commands.
171 $DISPLAY bugfix. Use the --display pinentry command line option.
173 Fixed a xmlError segfault.
176 PWMD v1.6
177 ----------
178 IMPORT command bugfix. It now overwrites the node of the same name as the root
179 node of the content argument.
181 When a client sends OPTION PINENTRY, the option value is valid for the current
182 session only, and not any future sessions of the same file.
185 PWMD v1.5
186 ----------
187 Added the "backup" configuration parameter. When true, the default, a backup
188 of the opened file will be saved in "data_directory" when a SAVE command is
189 sent. The filename will have the ".backup" extension appended to it.
191 Added the XPATH command. This command can retrieve a result of the specified
192 expression or set a value to the result of the specified expression.
194 Added the IMPORT command. This is like STORE but reads real XML data and
195 stores it at the specified element path.
197 A few bugfixes. See ChangeLog for details.
200 PWMD v1.4
201 ----------
202 Ported to libPth2. This fixes key cache locking portability and removes the
203 --disable-locking 'configure' option.
205 Added configuration parameter "syslog" to enable logging to the syslog daemon
206 with facility LOG_DAEMON and priority LOG_INFO.
208 When the key cache changes, send the CACHE status message to each connected
209 client.
211 Reuse libgpg-error error codes more often. If your using libpwmd, please
212 update to libpwmd5 otherwise error codes will be wrong.
214 Added configuration option "keepalive" to specify the interval, in seconds, to
215 send the new KEEPALIVE status message.
217 Added pinentry(1) support. This adds a new configuration parameter
218 "enable_pinentry" (the default is enabled), and a few options that can be set
219 with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE, PROMPT,
220 DESC and PINENTRY. Read COMMANDS for details.
222 Added OPTION CLIENT NAME=VALUE to let clients set a string that is associated
223 with the connection thread ID. This may be useful for debugging log messages.
225 The "iterations" configuration parameter can be set to -1 to disable
226 encryption. Setting to 0, the default, will still encrypt with 1 iteration (I
227 know it doesn't make sense, but it's needed for compatibility with previous
228 data files).
230 Empty (null) keys are now allowed.
232 Changed the "default" configuration file section to "global". Be sure to
233 update your config file(s).
235 A few bug fixes. See ChangeLog for details.
238 PWMD v1.3
239 ----------
240 More safety checks when writing the data file after a SAVE command.
242 Added configuration parameter "socket_perms" to set the permissions of the
243 created socked overriding any umask setting. May be useful if a client
244 other than the user who invoked pwmd needs to connect (i.e., ACL's).
246 Added 'configure' option --disable-locking to disable key cache mutex locking.
247 Some systems don't have a complete pthread_mutex_t data type which is needed
248 rather than a pointer (FreeBSD and others probably). Note that using this
249 option increases the risk of key cache and data file corruption when more than
250 one client is using pwmd at the same time and save to the same file. If
251 possible, upgrade your OS and see if this fixes things.
253 A few bugfixes. See ChangeLog for details.
256 PWMD v1.2
257 ----------
258 Added locking of the file/key cache with certain commands. This prevents other
259 clients from modifying the cache until the lock is released. This adds a new
260 pthread compile time dependency.
262 Zlib version 1.2.2.1 or later is now a requirement.
265 PWMD v1.1
266 ----------
267 Added configuration parameter "recursion_depth". This specifies the maximum
268 number of times to follow a "target" attribute for a single element. The
269 default is 20.
271 When creating a "target" attribute, each element in the element path value is
272 no longer modified with the literal '!' character at all. You need to specify
273 the literal instead. This keeps the syntax more consistent with the other
274 commands.
276 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
277 processed so far, and the total bytes. In order to see the total after
278 upgrading from a previous version you need to save the data file once.
280 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
282 The "disable_mlockall" configuration parameter now defaults to "true". Saves
283 RAM and is overkill for most since each memory deallocation is cleared before
284 being freed. The file cache is still locked in RAM though (if possible).
286 Bugfixes. See ChangeLog for details.
289 PWMD v1.0
290 ----------
291 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
292 if the file exists by using the GETCONFIG command along with 'data_directory'.
294 The CLEARCACHE command will always succeed (return 0) even if the file is not
295 found.
297 A few minor bugfixes.
300 PWMD v0.12
301 ----------
302 Added gettext support. Translations welcome.
304 Strip the first '!' of a newly created element. If there's a following one
305 it's an error. This is to avoid syntax errors and confusion with other
306 commands and element paths.
308 Only show the number of iterations so far when showing the PROGRESS status
309 message. The client can get the percentage by calculating the
310 "iteration_progress" with GETCONFIG.
312 Fixed a huge memory leak with (de)compression.
314 The cache status message format has changed to only show the used and
315 available slots and without any text strings to make it easier for clients to
316 parse.
318 SIGUSR1 is caught in the child process. This allows for reloading of the
319 configuration file.
321 Fixed pushing files and xml import with compression.
323 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
324 to work better this way.
326 Fixed a few memory leaks.
328 Fixed creating invalid XML elements. Elements must not begin with punctuation
329 or digit and not contain any whitespace.
331 The output of the LIST command is no longer sorted. Leave it up to the client.
334 PWMD v0.11
335 ----------
336 Added the GETCONFIG command. This will return a value for a configuration
337 parameter for the opened file or the default value if no file has been opened.
338 The "key" and "key_file" parameters are ignored.
340 Rewrote how element handling is done. No longer uses an xmlTextReader but
341 accesses the xmlDocPtr nodes directly.
343 The STORE command will no longer overwrite the element tree of the last
344 element in the specified element path. Instead it will set the content as
345 usual and keep the child nodes. This affects how GET handles empty elements.
346 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
347 command can also store content in a root element (account) and remove content
348 or store an empty element by not specifying any content after the last TAB in
349 the element path.
351 Each element in an element path can now be prefixed with the literal '!'
352 character. This allows for following targets of elements other than the root
353 element.
355 The LIST command will now shows all reachable elements including target
356 elements for the specified element path. It also prefixes each element with
357 the literal '!' when needed.
359 Added support for compressing data files before encryption. This adds the
360 "compression_level" configuration parameter. The default is 6 and setting to 0
361 will disable.
363 A couple of bug fixes.
366 PWMD v0.10
367 ----------
368 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
369 invalid keys etc. used to return an error code that used
370 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
371 now. This breaks compatibility with clients that make use of the error codes
372 (i.e., libpwmd). Be sure to update.
374 Non-option arguments on the command line are files to cache upon startup. This
375 acts like the 'cache_push' configuration parameter.
377 The location of the default configuration file is now ~/.pwmd/config and the
378 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
379 This fixes clients opening these non-data filenames.
381 Fixed default configuration values when an rcfile doesn't have one.
383 The configuration parameters 'key' and 'key_file' now check to make sure the
384 key is valid before adding it to the cache like 'cache_push' does.
386 Clear the file cache and free the memlist on SIGABRT when debugging is not
387 enabled.
389 Added command line option -b to fork pwmd to the background.
391 Added configuration parameter "iteration_progress". pwmd will send the client
392 a status message showing the percent of iterations that are complete while
393 encrypting or decrypting a data file. The default is 0 which disables sending
394 status messages.
396 Sending SIGUSR1 to pwmd will reload the configuration file.
398 New protocol command REALPATH. This will resolve any "target" attribute for
399 all elements in the specified element path and return the result.
401 Some portability (FreeBSD and maybe others) fixes.
403 SIGTERM and SIGABRT are now properly caught in a child process.
405 Bugfixes.
408 PWMD v0.9
409 ---------
410 Now uses the assuan protocol. This requires libassuan and libgpg-error.
412 Clear the shared memory on exit.
414 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
415 into their own commands removing the CACHE command itself.
417 The RESETCACHE command and the cache_reset_timeout configuration parameter
418 have been removed. The cached files timeout is reset to it's configured value
419 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
421 The OPEN command can open another file using the same connection. Beware
422 though that if the OPEN of the new file fails, no file will be open at all.
424 When OPEN'ing a new file with a specified key, cache both the filename and
425 key. Before you had to SAVE to cache the key.
427 All commands will check if the file has been modified before continueing. Not
428 the cache commands though.
430 Don't unlink() a socket filename that wasn't created by pwmd.
432 Fixed allocating more slots than needed.
434 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
435 unless the element path argument is prefixed with a '!'. The LIST command
436 will support "target" in the next release, hopefully.
438 Accounts names can no longer begin with a '!' character to avoid problems with
439 the "target" attribute.
441 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
442 EPWMD_COMMAND_SYNTAX instead.
444 Added command line option -D and configuration parameter
445 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
446 commands will return EPWMD_EMPTY_ELEMENT.
449 PWMD v0.8
450 ---------
451 Use AM_XML2_PATH() for finding libxml2.
453 Split pwmd and libpwmd into their own projects. Both can be found at
454 http://bjk.sourceforge.net/pwmd/.
457 PWMD v0.7
458 ---------
459 cache_push and working directory bugfix.
461 Added two new configuration options "key" and "key_file". Works with
462 cache_push too.
464 Added a boolean "cache_reset_timeout" configuration option to reset the timer
465 for a cached key when the OPEN or SAVE commands are used.
467 Added two new protocol commands CACHE RESET which clears only the key for the
468 specified file and CACHE RESETALL which clears the key for all files.
470 The "name" and "target" attributes are now case-sensitive.
472 The value of an element path that contains a "target" attribute can be
473 obtained by prefixing the account element with a '!'.
476 PWMD v0.6
477 ---------
478 Fix for the LIST command. When an element path was specified and the document
479 had following elements in the tree the following elements would be shown.
481 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
482 seconds. This adds a new configuration file setting "cache_timeout".
484 Added per-file settings in the configuration file. A file section is declared
485 by placing the filename in braces. Only the "iterations" and "cache_timeout"
486 settings are used in a file section.
488 No longer chdir() to the data directory.
491 PWMD v0.5
492 ---------
493 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
495 Write a structure to the data file which specifies the iterations and IV. This
496 lets you open a file that had a different iteration setting than the current
497 setting. Breaks file compatibility with previous versions for hopefully the
498 last time.
500 cache_push with an invalid password bugfix.
502 Added command line option -I to import an XML file and write the encrypted
503 data to stdout.
506 PWMD v0.4
507 ---------
508 Use AES-256-CBC to store the data file. This breaks file compatibility with
509 older versions. Sorry.
511 The ATTR protocol command has a new GET sub-command to get an attribute value
512 for an element path.
514 The LIST protocol command can now take an element path.
516 The DUMP command will format it's output.
518 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
519 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
520 supports this.
522 Fixed closing file descriptors.
524 Fixed some memory leaks.
526 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
527 before free()ing.
529 Added an "iterations" configuration parameter. This specifies the amount of
530 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
531 aespipe.
534 PWMD v0.3
535 ---------
536 The SETATTR protocol command has been renamed to ATTR. This new command
537 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
538 attribute, DELETE to delete an attribute and LIST to list attributes of an
539 element path. Read PROTOCOL for details.
541 Added the TARGET attribute. If an element has this attribute set, it's value
542 is another element path. It's recursive too so the destination element path
543 can be an element with a TARGET attribute. Be careful of loops though.
545 Added the DUMP protocol command. It shows the in-memory document. Useful for
546 cleaning up empty elements that aren't shown with any command.
548 The "name" attribute can be used in any element but cannot be removed for the
549 root "account" element.
551 More strict element name validation for new elements.
553 Code reorganization. Protocol commands have been put in src/commands.c.
555 The LIST command won't show element values anymore unless DEBUG was defined at
556 compile time. You must use the GET command to get a value.
558 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
559 Plain text is where it's at.
561 The STORE command wont base64 encode the value. We'll leave it up to the
562 client. But it's still recommended to avoid parsing errors.
564 All of the command line options have been moved into a configuration file. By
565 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
566 alternate file. If the file doesn't exist, then some defaults will be used.
567 There is one new config option though; "cache_push" will take a list of
568 filenames as an argument. This will prompt for passwords upon startup and add
569 the file to the cache. It's a (temporary?) fix for background processes that
570 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
571 the other process needs is added to the cache.
574 PWMD v0.2
575 ---------
576 There is a library included in the archive to make interfacing the pwmd alot
577 easier. See libpwmd/README for more information.
579 A (temporary) fix for 100% CPU usage after a client connects.
581 GnuPG is no longer used for data encryption. Instead, libgcrypt will
582 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
583 need the base64 encoded key.
585 Renamed host to hostname and added sslfingerprint to the DTD.
587 Added command line option -s to specify the socket path.
589 Added command line option -d to specify where pwmd will open and save the data
590 files.
592 Renamed protocol command SET to SETATTR.
594 Added shared memory file caching. If a file is found in the cache then the
595 cached password associated with the file will be used with the OPEN command.
596 With SAVE, if there is no cached password a key is required, else the cached
597 password will be used unless there is a key argument. This also adds a new
598 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
599 Sending the SIGHUP signal to pwmd will clear the file cache.
601 Added command line option -M to disable calling mlockall(). mlock() will still
602 be used for the file cache reguardless of this option.
604 Added command line option -C to specify the file cache size. The cache size
605 must be in multiples of PAGE_SIZE.
607 Added command line option -l to enable logging to the specified file.
609 If there is a protocol command error, ERR is returned along with a protocol
610 error code and description. See src/pwmd_error.h for error codes.
612 Fix for the DELETE command and deleting an entire element tree when an invalid
613 element was in the element path.
615 Fix for the GET command and finding elements of the same name in other
616 accounts.
618 Added a manual page.
621 PWMD v0.1
622 ---------
623 Initial release.