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