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