Added OPTION KEYFILE. Setting to 0 will disable trying to read the key
[pwmd.git] / NEWS
blobb8cdb9ca845275a39d2cc28513fbef730741ab36
1 PWMD v1.14
2 ----------
3 OPTION TIMEOUT will no longer be considered with the SAVE command. This should
4 be safe because it's normally an interactive command.
6 The keepalive and cache timeout threads aren't terminated until after all
7 clients have exited even after receiving a quit signal.
9 A few bug fixes. See ChangeLog for details.
12 PWMD v1.13
13 ----------
14 Sorry about this second release in the same day but I didn't catch these two
15 bugs until it was too late.
17 Parse ~/.pwmd/pinentry.conf even when adding files from the command line.
19 Fixed an uninitialized variable which may have led to invalid DECRYPT status
20 messages.
23 PWMD v1.12
24 ----------
25 There is now a GIT repository allowing anonymous checkouts and a web interface
26 at http://repo.or.cz/w/pwmd.git. To clone the repository:
28     git clone git://repo.or.cz/pwmd.git
30     To get the latest changes:
32     git pull
34 Fixed a segfault when adding a file to the cache from the command line.
37 PWMD v1.11
38 ----------
39 pwmd now becomes a daemon process (forks into the background) by default. To
40 prevent this use the new -n command line switch.
42 Added support for pinentry timeouts. This adds a new OPTION TIMEOUT protocol
43 command and the new "pinentry_timeout" configuration parameter. These set the
44 number of seconds before the pinentry process is terminated.
46 SIGHUP now reloads the configuration file rather than SIGUSR1 and SIGUSR1 will
47 reset the key cache. Sorry for the switch but I see more applications using
48 SIGHUP for file reloading and I'd like to be conforming.
50 Fixed launching pinentry when DISPLAY is unset.
52 Added configuration parameter "priority" to specify the niceness of pwmd. The
53 default value is inherited from the parent process.
55 Added support for pinentry's password quality meter. You'll need to have
56 cracklib2 installed and pass --enable-quality to ./configure.
59 PWMD v1.10
60 ----------
61 ATTR LIST now separates the attribute name and value with a space rather than
62 a tab.
64 Send LOCKED status messages while waiting for the pinentry mutex.
66 A couple minor cleanups.
69 PWMD v1.9
70 ----------
71 Fixed GETCONFIG showing the "key" and "key_file" parameters. Got broken in the
72 previous release.
74 Added the GETPID command which returns the process ID of pwmd.
76 Fixed terminating a client after it disconnected in the middle of a file mutex
77 lock. Note that while a client is waiting for a file mutex lock, a LOCKED
78 status message will be sent to the client once every second.
80 OPTION ITERATIONS no longer requires an open file and also sends the CONFIG
81 status message when successful.
83 Send both the current iteration and total iterations in the ENCRYPT and
84 DECRYPT status messages. This should make it easier for clients.
86 The "iterations" configuration parameter is updated after a successful OPEN
87 command. This keeps the iteration setting from the file header and can be
88 changed with OPTION ITERATIONS before saving. The "iterations" configuration
89 option is now only useful for new files. The CONFIG status message will be
90 sent to all clients when the file header iterations differs from the
91 configured one. Note that all this only applies to exiting files (OPEN) and
92 not new ones.
94 The GETCONFIG command now converts the configuration parameter to lower case.
97 PWMD v1.8
98 ----------
99 The GETCONFIG command can take a file argument. This lets the client retrieve
100 values for files that aren't opened yet.
102 Added command line option -i to specify the number of encryption iterations
103 when importing. If not specified, the "global" configuration parameter will be
104 used like before.
106 Fixed the "iteration" and "iteration_progress" configuration parameters when
107 used in a file section.
109 Added the CONFIG status message. This is sent when the configuration file is
110 reloaded (SIGUSR1).
112 Added the CLIENTS status message to show how many clients are connected.
114 Removed the cleanup thread. Cleanups now occur immediately after the client
115 thread terminates.
117 Redid how status messages are sent. We now use a pth_msgport_t rather than
118 signals.
120 Added OPTION ITERATIONS to set the encryption iterations for the current file.
121 This will send the CONFIG status message when successful.
124 PWMD v1.7
125 ----------
126 Added the LOCK and UNLOCK commands.
128 $DISPLAY bugfix. Use the --display pinentry command line option.
130 Fixed a xmlError segfault.
133 PWMD v1.6
134 ----------
135 IMPORT command bugfix. It now overwrites the node of the same name as the root
136 node of the content argument.
138 When a client sends OPTION PINENTRY, the option value is valid for the current
139 session only, and not any future sessions of the same file.
142 PWMD v1.5
143 ----------
144 Added the "backup" configuration parameter. When true, the default, a backup
145 of the opened file will be saved in "data_directory" when a SAVE command is
146 sent. The filename will have the ".backup" extension appended to it.
148 Added the XPATH command. This command can retrieve a result of the specified
149 expression or set a value to the result of the specified expression.
151 Added the IMPORT command. This is like STORE but reads real XML data and
152 stores it at the specified element path.
154 A few bugfixes. See ChangeLog for details.
157 PWMD v1.4
158 ----------
159 Ported to libPth2. This fixes key cache locking portability and removes the
160 --disable-locking 'configure' option.
162 Added configuration parameter "syslog" to enable logging to the syslog daemon
163 with facility LOG_DAEMON and priority LOG_INFO.
165 When the key cache changes, send the CACHE status message to each connected
166 client.
168 Reuse libgpg-error error codes more often. If your using libpwmd, please
169 update to libpwmd5 otherwise error codes will be wrong.
171 Added configuration option "keepalive" to specify the interval, in seconds, to
172 send the new KEEPALIVE status message.
174 Added pinentry(1) support. This adds a new configuration parameter
175 "enable_pinentry" (the default is enabled), and a few options that can be set
176 with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE, PROMPT,
177 DESC and PINENTRY. Read COMMANDS for details.
179 Added OPTION CLIENT NAME=VALUE to let clients set a string that is associated
180 with the connection thread ID. This may be useful for debugging log messages.
182 The "iterations" configuration parameter can be set to -1 to disable
183 encryption. Setting to 0, the default, will still encrypt with 1 iteration (I
184 know it doesn't make sense, but it's needed for compatibility with previous
185 data files).
187 Empty (null) keys are now allowed.
189 Changed the "default" configuration file section to "global". Be sure to
190 update your config file(s).
192 A few bug fixes. See ChangeLog for details.
195 PWMD v1.3
196 ----------
197 More safety checks when writing the data file after a SAVE command.
199 Added configuration parameter "socket_perms" to set the permissions of the
200 created socked overriding any umask setting. May be useful if a client
201 other than the user who invoked pwmd needs to connect (i.e., ACL's).
203 Added 'configure' option --disable-locking to disable key cache mutex locking.
204 Some systems don't have a complete pthread_mutex_t data type which is needed
205 rather than a pointer (FreeBSD and others probably). Note that using this
206 option increases the risk of key cache and data file corruption when more than
207 one client is using pwmd at the same time and save to the same file. If
208 possible, upgrade your OS and see if this fixes things.
210 A few bugfixes. See ChangeLog for details.
213 PWMD v1.2
214 ----------
215 Added locking of the file/key cache with certain commands. This prevents other
216 clients from modifying the cache until the lock is released. This adds a new
217 pthread compile time dependency.
219 Zlib version 1.2.2.1 or later is now a requirement.
222 PWMD v1.1
223 ----------
224 Added configuration parameter "recursion_depth". This specifies the maximum
225 number of times to follow a "target" attribute for a single element. The
226 default is 20.
228 When creating a "target" attribute, each element in the element path value is
229 no longer modified with the literal '!' character at all. You need to specify
230 the literal instead. This keeps the syntax more consistent with the other
231 commands.
233 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
234 processed so far, and the total bytes. In order to see the total after
235 upgrading from a previous version you need to save the data file once.
237 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
239 The "disable_mlockall" configuration parameter now defaults to "true". Saves
240 RAM and is overkill for most since each memory deallocation is cleared before
241 being freed. The file cache is still locked in RAM though (if possible).
243 Bugfixes. See ChangeLog for details.
246 PWMD v1.0
247 ----------
248 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
249 if the file exists by using the GETCONFIG command along with 'data_directory'.
251 The CLEARCACHE command will always succeed (return 0) even if the file is not
252 found.
254 A few minor bugfixes.
257 PWMD v0.12
258 ----------
259 Added gettext support. Translations welcome.
261 Strip the first '!' of a newly created element. If there's a following one
262 it's an error. This is to avoid syntax errors and confusion with other
263 commands and element paths.
265 Only show the number of iterations so far when showing the PROGRESS status
266 message. The client can get the percentage by calculating the
267 "iteration_progress" with GETCONFIG.
269 Fixed a huge memory leak with (de)compression.
271 The cache status message format has changed to only show the used and
272 available slots and without any text strings to make it easier for clients to
273 parse.
275 SIGUSR1 is caught in the child process. This allows for reloading of the
276 configuration file.
278 Fixed pushing files and xml import with compression.
280 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
281 to work better this way.
283 Fixed a few memory leaks.
285 Fixed creating invalid XML elements. Elements must not begin with punctuation
286 or digit and not contain any whitespace.
288 The output of the LIST command is no longer sorted. Leave it up to the client.
291 PWMD v0.11
292 ----------
293 Added the GETCONFIG command. This will return a value for a configuration
294 parameter for the opened file or the default value if no file has been opened.
295 The "key" and "key_file" parameters are ignored.
297 Rewrote how element handling is done. No longer uses an xmlTextReader but
298 accesses the xmlDocPtr nodes directly.
300 The STORE command will no longer overwrite the element tree of the last
301 element in the specified element path. Instead it will set the content as
302 usual and keep the child nodes. This affects how GET handles empty elements.
303 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
304 command can also store content in a root element (account) and remove content
305 or store an empty element by not specifying any content after the last TAB in
306 the element path.
308 Each element in an element path can now be prefixed with the literal '!'
309 character. This allows for following targets of elements other than the root
310 element.
312 The LIST command will now shows all reachable elements including target
313 elements for the specified element path. It also prefixes each element with
314 the literal '!' when needed.
316 Added support for compressing data files before encryption. This adds the
317 "compression_level" configuration parameter. The default is 6 and setting to 0
318 will disable.
320 A couple of bug fixes.
323 PWMD v0.10
324 ----------
325 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
326 invalid keys etc. used to return an error code that used
327 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
328 now. This breaks compatibility with clients that make use of the error codes
329 (i.e., libpwmd). Be sure to update.
331 Non-option arguments on the command line are files to cache upon startup. This
332 acts like the 'cache_push' configuration parameter.
334 The location of the default configuration file is now ~/.pwmd/config and the
335 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
336 This fixes clients opening these non-data filenames.
338 Fixed default configuration values when an rcfile doesn't have one.
340 The configuration parameters 'key' and 'key_file' now check to make sure the
341 key is valid before adding it to the cache like 'cache_push' does.
343 Clear the file cache and free the memlist on SIGABRT when debugging is not
344 enabled.
346 Added command line option -b to fork pwmd to the background.
348 Added configuration parameter "iteration_progress". pwmd will send the client
349 a status message showing the percent of iterations that are complete while
350 encrypting or decrypting a data file. The default is 0 which disables sending
351 status messages.
353 Sending SIGUSR1 to pwmd will reload the configuration file.
355 New protocol command REALPATH. This will resolve any "target" attribute for
356 all elements in the specified element path and return the result.
358 Some portability (FreeBSD and maybe others) fixes.
360 SIGTERM and SIGABRT are now properly caught in a child process.
362 Bugfixes.
365 PWMD v0.9
366 ---------
367 Now uses the assuan protocol. This requires libassuan and libgpg-error.
369 Clear the shared memory on exit.
371 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
372 into their own commands removing the CACHE command itself.
374 The RESETCACHE command and the cache_reset_timeout configuration parameter
375 have been removed. The cached files timeout is reset to it's configured value
376 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
378 The OPEN command can open another file using the same connection. Beware
379 though that if the OPEN of the new file fails, no file will be open at all.
381 When OPEN'ing a new file with a specified key, cache both the filename and
382 key. Before you had to SAVE to cache the key.
384 All commands will check if the file has been modified before continueing. Not
385 the cache commands though.
387 Don't unlink() a socket filename that wasn't created by pwmd.
389 Fixed allocating more slots than needed.
391 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
392 unless the element path argument is prefixed with a '!'. The LIST command
393 will support "target" in the next release, hopefully.
395 Accounts names can no longer begin with a '!' character to avoid problems with
396 the "target" attribute.
398 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
399 EPWMD_COMMAND_SYNTAX instead.
401 Added command line option -D and configuration parameter
402 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
403 commands will return EPWMD_EMPTY_ELEMENT.
406 PWMD v0.8
407 ---------
408 Use AM_XML2_PATH() for finding libxml2.
410 Split pwmd and libpwmd into their own projects. Both can be found at
411 http://bjk.sourceforge.net/pwmd/.
414 PWMD v0.7
415 ---------
416 cache_push and working directory bugfix.
418 Added two new configuration options "key" and "key_file". Works with
419 cache_push too.
421 Added a boolean "cache_reset_timeout" configuration option to reset the timer
422 for a cached key when the OPEN or SAVE commands are used.
424 Added two new protocol commands CACHE RESET which clears only the key for the
425 specified file and CACHE RESETALL which clears the key for all files.
427 The "name" and "target" attributes are now case-sensitive.
429 The value of an element path that contains a "target" attribute can be
430 obtained by prefixing the account element with a '!'.
433 PWMD v0.6
434 ---------
435 Fix for the LIST command. When an element path was specified and the document
436 had following elements in the tree the following elements would be shown.
438 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
439 seconds. This adds a new configuration file setting "cache_timeout".
441 Added per-file settings in the configuration file. A file section is declared
442 by placing the filename in braces. Only the "iterations" and "cache_timeout"
443 settings are used in a file section.
445 No longer chdir() to the data directory.
448 PWMD v0.5
449 ---------
450 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
452 Write a structure to the data file which specifies the iterations and IV. This
453 lets you open a file that had a different iteration setting than the current
454 setting. Breaks file compatibility with previous versions for hopefully the
455 last time.
457 cache_push with an invalid password bugfix.
459 Added command line option -I to import an XML file and write the encrypted
460 data to stdout.
463 PWMD v0.4
464 ---------
465 Use AES-256-CBC to store the data file. This breaks file compatibility with
466 older versions. Sorry.
468 The ATTR protocol command has a new GET sub-command to get an attribute value
469 for an element path.
471 The LIST protocol command can now take an element path.
473 The DUMP command will format it's output.
475 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
476 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
477 supports this.
479 Fixed closing file descriptors.
481 Fixed some memory leaks.
483 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
484 before free()ing.
486 Added an "iterations" configuration parameter. This specifies the amount of
487 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
488 aespipe.
491 PWMD v0.3
492 ---------
493 The SETATTR protocol command has been renamed to ATTR. This new command
494 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
495 attribute, DELETE to delete an attribute and LIST to list attributes of an
496 element path. Read PROTOCOL for details.
498 Added the TARGET attribute. If an element has this attribute set, it's value
499 is another element path. It's recursive too so the destination element path
500 can be an element with a TARGET attribute. Be careful of loops though.
502 Added the DUMP protocol command. It shows the in-memory document. Useful for
503 cleaning up empty elements that aren't shown with any command.
505 The "name" attribute can be used in any element but cannot be removed for the
506 root "account" element.
508 More strict element name validation for new elements.
510 Code reorganization. Protocol commands have been put in src/commands.c.
512 The LIST command won't show element values anymore unless DEBUG was defined at
513 compile time. You must use the GET command to get a value.
515 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
516 Plain text is where it's at.
518 The STORE command wont base64 encode the value. We'll leave it up to the
519 client. But it's still recommended to avoid parsing errors.
521 All of the command line options have been moved into a configuration file. By
522 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
523 alternate file. If the file doesn't exist, then some defaults will be used.
524 There is one new config option though; "cache_push" will take a list of
525 filenames as an argument. This will prompt for passwords upon startup and add
526 the file to the cache. It's a (temporary?) fix for background processes that
527 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
528 the other process needs is added to the cache.
531 PWMD v0.2
532 ---------
533 There is a library included in the archive to make interfacing the pwmd alot
534 easier. See libpwmd/README for more information.
536 A (temporary) fix for 100% CPU usage after a client connects.
538 GnuPG is no longer used for data encryption. Instead, libgcrypt will
539 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
540 need the base64 encoded key.
542 Renamed host to hostname and added sslfingerprint to the DTD.
544 Added command line option -s to specify the socket path.
546 Added command line option -d to specify where pwmd will open and save the data
547 files.
549 Renamed protocol command SET to SETATTR.
551 Added shared memory file caching. If a file is found in the cache then the
552 cached password associated with the file will be used with the OPEN command.
553 With SAVE, if there is no cached password a key is required, else the cached
554 password will be used unless there is a key argument. This also adds a new
555 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
556 Sending the SIGHUP signal to pwmd will clear the file cache.
558 Added command line option -M to disable calling mlockall(). mlock() will still
559 be used for the file cache reguardless of this option.
561 Added command line option -C to specify the file cache size. The cache size
562 must be in multiples of PAGE_SIZE.
564 Added command line option -l to enable logging to the specified file.
566 If there is a protocol command error, ERR is returned along with a protocol
567 error code and description. See src/pwmd_error.h for error codes.
569 Fix for the DELETE command and deleting an entire element tree when an invalid
570 element was in the element path.
572 Fix for the GET command and finding elements of the same name in other
573 accounts.
575 Added a manual page.
578 PWMD v0.1
579 ---------
580 Initial release.