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