Version 1.10.
[pwmd.git] / NEWS
blobda47014ab94312d5038961e7cb2e84f10abd6863
1 PWMD v1.10
2 ----------
3 ATTR LIST now separates the attribute name and value with a space rather than
4 a tab.
6 Send LOCKED status messages while waiting for the pinentry mutex.
8 A couple minor cleanups.
11 PWMD v1.9
12 ----------
13 Fixed GETCONFIG showing the "key" and "key_file" parameters. Got broken in the
14 previous release.
16 Added the GETPID command which returns the process ID of pwmd.
18 Fixed terminating a client after it disconnected in the middle of a file mutex
19 lock. Note that while a client is waiting for a file mutex lock, a LOCKED
20 status message will be sent to the client once every second.
22 OPTION ITERATIONS no longer requires an open file and also sends the CONFIG
23 status message when successful.
25 Send both the current iteration and total iterations in the ENCRYPT and
26 DECRYPT status messages. This should make it easier for clients.
28 The "iterations" configuration parameter is updated after a successful OPEN
29 command. This keeps the iteration setting from the file header and can be
30 changed with OPTION ITERATIONS before saving. The "iterations" configuration
31 option is now only useful for new files. The CONFIG status message will be
32 sent to all clients when the file header iterations differs from the
33 configured one. Note that all this only applies to exiting files (OPEN) and
34 not new ones.
36 The GETCONFIG command now converts the configuration parameter to lower case.
39 PWMD v1.8
40 ----------
41 The GETCONFIG command can take a file argument. This lets the client retrieve
42 values for files that aren't opened yet.
44 Added command line option -i to specify the number of encryption iterations
45 when importing. If not specified, the "global" configuration parameter will be
46 used like before.
48 Fixed the "iteration" and "iteration_progress" configuration parameters when
49 used in a file section.
51 Added the CONFIG status message. This is sent when the configuration file is
52 reloaded (SIGUSR1).
54 Added the CLIENTS status message to show how many clients are connected.
56 Removed the cleanup thread. Cleanups now occur immediately after the client
57 thread terminates.
59 Redid how status messages are sent. We now use a pth_msgport_t rather than
60 signals.
62 Added OPTION ITERATIONS to set the encryption iterations for the current file.
63 This will send the CONFIG status message when successful.
66 PWMD v1.7
67 ----------
68 Added the LOCK and UNLOCK commands.
70 $DISPLAY bugfix. Use the --display pinentry command line option.
72 Fixed a xmlError segfault.
75 PWMD v1.6
76 ----------
77 IMPORT command bugfix. It now overwrites the node of the same name as the root
78 node of the content argument.
80 When a client sends OPTION PINENTRY, the option value is valid for the current
81 session only, and not any future sessions of the same file.
84 PWMD v1.5
85 ----------
86 Added the "backup" configuration parameter. When true, the default, a backup
87 of the opened file will be saved in "data_directory" when a SAVE command is
88 sent. The filename will have the ".backup" extension appended to it.
90 Added the XPATH command. This command can retrieve a result of the specified
91 expression or set a value to the result of the specified expression.
93 Added the IMPORT command. This is like STORE but reads real XML data and
94 stores it at the specified element path.
96 A few bugfixes. See ChangeLog for details.
99 PWMD v1.4
100 ----------
101 Ported to libPth2. This fixes key cache locking portability and removes the
102 --disable-locking 'configure' option.
104 Added configuration parameter "syslog" to enable logging to the syslog daemon
105 with facility LOG_DAEMON and priority LOG_INFO.
107 When the key cache changes, send the CACHE status message to each connected
108 client.
110 Reuse libgpg-error error codes more often. If your using libpwmd, please
111 update to libpwmd5 otherwise error codes will be wrong.
113 Added configuration option "keepalive" to specify the interval, in seconds, to
114 send the new KEEPALIVE status message.
116 Added pinentry(1) support. This adds a new configuration parameter
117 "enable_pinentry" (the default is enabled), and a few options that can be set
118 with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE, PROMPT,
119 DESC and PINENTRY. Read COMMANDS for details.
121 Added OPTION CLIENT NAME=VALUE to let clients set a string that is associated
122 with the connection thread ID. This may be useful for debugging log messages.
124 The "iterations" configuration parameter can be set to -1 to disable
125 encryption. Setting to 0, the default, will still encrypt with 1 iteration (I
126 know it doesn't make sense, but it's needed for compatibility with previous
127 data files).
129 Empty (null) keys are now allowed.
131 Changed the "default" configuration file section to "global". Be sure to
132 update your config file(s).
134 A few bug fixes. See ChangeLog for details.
137 PWMD v1.3
138 ----------
139 More safety checks when writing the data file after a SAVE command.
141 Added configuration parameter "socket_perms" to set the permissions of the
142 created socked overriding any umask setting. May be useful if a client
143 other than the user who invoked pwmd needs to connect (i.e., ACL's).
145 Added 'configure' option --disable-locking to disable key cache mutex locking.
146 Some systems don't have a complete pthread_mutex_t data type which is needed
147 rather than a pointer (FreeBSD and others probably). Note that using this
148 option increases the risk of key cache and data file corruption when more than
149 one client is using pwmd at the same time and save to the same file. If
150 possible, upgrade your OS and see if this fixes things.
152 A few bugfixes. See ChangeLog for details.
155 PWMD v1.2
156 ----------
157 Added locking of the file/key cache with certain commands. This prevents other
158 clients from modifying the cache until the lock is released. This adds a new
159 pthread compile time dependency.
161 Zlib version 1.2.2.1 or later is now a requirement.
164 PWMD v1.1
165 ----------
166 Added configuration parameter "recursion_depth". This specifies the maximum
167 number of times to follow a "target" attribute for a single element. The
168 default is 20.
170 When creating a "target" attribute, each element in the element path value is
171 no longer modified with the literal '!' character at all. You need to specify
172 the literal instead. This keeps the syntax more consistent with the other
173 commands.
175 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
176 processed so far, and the total bytes. In order to see the total after
177 upgrading from a previous version you need to save the data file once.
179 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
181 The "disable_mlockall" configuration parameter now defaults to "true". Saves
182 RAM and is overkill for most since each memory deallocation is cleared before
183 being freed. The file cache is still locked in RAM though (if possible).
185 Bugfixes. See ChangeLog for details.
188 PWMD v1.0
189 ----------
190 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
191 if the file exists by using the GETCONFIG command along with 'data_directory'.
193 The CLEARCACHE command will always succeed (return 0) even if the file is not
194 found.
196 A few minor bugfixes.
199 PWMD v0.12
200 ----------
201 Added gettext support. Translations welcome.
203 Strip the first '!' of a newly created element. If there's a following one
204 it's an error. This is to avoid syntax errors and confusion with other
205 commands and element paths.
207 Only show the number of iterations so far when showing the PROGRESS status
208 message. The client can get the percentage by calculating the
209 "iteration_progress" with GETCONFIG.
211 Fixed a huge memory leak with (de)compression.
213 The cache status message format has changed to only show the used and
214 available slots and without any text strings to make it easier for clients to
215 parse.
217 SIGUSR1 is caught in the child process. This allows for reloading of the
218 configuration file.
220 Fixed pushing files and xml import with compression.
222 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
223 to work better this way.
225 Fixed a few memory leaks.
227 Fixed creating invalid XML elements. Elements must not begin with punctuation
228 or digit and not contain any whitespace.
230 The output of the LIST command is no longer sorted. Leave it up to the client.
233 PWMD v0.11
234 ----------
235 Added the GETCONFIG command. This will return a value for a configuration
236 parameter for the opened file or the default value if no file has been opened.
237 The "key" and "key_file" parameters are ignored.
239 Rewrote how element handling is done. No longer uses an xmlTextReader but
240 accesses the xmlDocPtr nodes directly.
242 The STORE command will no longer overwrite the element tree of the last
243 element in the specified element path. Instead it will set the content as
244 usual and keep the child nodes. This affects how GET handles empty elements.
245 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
246 command can also store content in a root element (account) and remove content
247 or store an empty element by not specifying any content after the last TAB in
248 the element path.
250 Each element in an element path can now be prefixed with the literal '!'
251 character. This allows for following targets of elements other than the root
252 element.
254 The LIST command will now shows all reachable elements including target
255 elements for the specified element path. It also prefixes each element with
256 the literal '!' when needed.
258 Added support for compressing data files before encryption. This adds the
259 "compression_level" configuration parameter. The default is 6 and setting to 0
260 will disable.
262 A couple of bug fixes.
265 PWMD v0.10
266 ----------
267 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
268 invalid keys etc. used to return an error code that used
269 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
270 now. This breaks compatibility with clients that make use of the error codes
271 (i.e., libpwmd). Be sure to update.
273 Non-option arguments on the command line are files to cache upon startup. This
274 acts like the 'cache_push' configuration parameter.
276 The location of the default configuration file is now ~/.pwmd/config and the
277 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
278 This fixes clients opening these non-data filenames.
280 Fixed default configuration values when an rcfile doesn't have one.
282 The configuration parameters 'key' and 'key_file' now check to make sure the
283 key is valid before adding it to the cache like 'cache_push' does.
285 Clear the file cache and free the memlist on SIGABRT when debugging is not
286 enabled.
288 Added command line option -b to fork pwmd to the background.
290 Added configuration parameter "iteration_progress". pwmd will send the client
291 a status message showing the percent of iterations that are complete while
292 encrypting or decrypting a data file. The default is 0 which disables sending
293 status messages.
295 Sending SIGUSR1 to pwmd will reload the configuration file.
297 New protocol command REALPATH. This will resolve any "target" attribute for
298 all elements in the specified element path and return the result.
300 Some portability (FreeBSD and maybe others) fixes.
302 SIGTERM and SIGABRT are now properly caught in a child process.
304 Bugfixes.
307 PWMD v0.9
308 ---------
309 Now uses the assuan protocol. This requires libassuan and libgpg-error.
311 Clear the shared memory on exit.
313 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
314 into their own commands removing the CACHE command itself.
316 The RESETCACHE command and the cache_reset_timeout configuration parameter
317 have been removed. The cached files timeout is reset to it's configured value
318 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
320 The OPEN command can open another file using the same connection. Beware
321 though that if the OPEN of the new file fails, no file will be open at all.
323 When OPEN'ing a new file with a specified key, cache both the filename and
324 key. Before you had to SAVE to cache the key.
326 All commands will check if the file has been modified before continueing. Not
327 the cache commands though.
329 Don't unlink() a socket filename that wasn't created by pwmd.
331 Fixed allocating more slots than needed.
333 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
334 unless the element path argument is prefixed with a '!'. The LIST command
335 will support "target" in the next release, hopefully.
337 Accounts names can no longer begin with a '!' character to avoid problems with
338 the "target" attribute.
340 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
341 EPWMD_COMMAND_SYNTAX instead.
343 Added command line option -D and configuration parameter
344 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
345 commands will return EPWMD_EMPTY_ELEMENT.
348 PWMD v0.8
349 ---------
350 Use AM_XML2_PATH() for finding libxml2.
352 Split pwmd and libpwmd into their own projects. Both can be found at
353 http://bjk.sourceforge.net/pwmd/.
356 PWMD v0.7
357 ---------
358 cache_push and working directory bugfix.
360 Added two new configuration options "key" and "key_file". Works with
361 cache_push too.
363 Added a boolean "cache_reset_timeout" configuration option to reset the timer
364 for a cached key when the OPEN or SAVE commands are used.
366 Added two new protocol commands CACHE RESET which clears only the key for the
367 specified file and CACHE RESETALL which clears the key for all files.
369 The "name" and "target" attributes are now case-sensitive.
371 The value of an element path that contains a "target" attribute can be
372 obtained by prefixing the account element with a '!'.
375 PWMD v0.6
376 ---------
377 Fix for the LIST command. When an element path was specified and the document
378 had following elements in the tree the following elements would be shown.
380 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
381 seconds. This adds a new configuration file setting "cache_timeout".
383 Added per-file settings in the configuration file. A file section is declared
384 by placing the filename in braces. Only the "iterations" and "cache_timeout"
385 settings are used in a file section.
387 No longer chdir() to the data directory.
390 PWMD v0.5
391 ---------
392 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
394 Write a structure to the data file which specifies the iterations and IV. This
395 lets you open a file that had a different iteration setting than the current
396 setting. Breaks file compatibility with previous versions for hopefully the
397 last time.
399 cache_push with an invalid password bugfix.
401 Added command line option -I to import an XML file and write the encrypted
402 data to stdout.
405 PWMD v0.4
406 ---------
407 Use AES-256-CBC to store the data file. This breaks file compatibility with
408 older versions. Sorry.
410 The ATTR protocol command has a new GET sub-command to get an attribute value
411 for an element path.
413 The LIST protocol command can now take an element path.
415 The DUMP command will format it's output.
417 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
418 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
419 supports this.
421 Fixed closing file descriptors.
423 Fixed some memory leaks.
425 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
426 before free()ing.
428 Added an "iterations" configuration parameter. This specifies the amount of
429 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
430 aespipe.
433 PWMD v0.3
434 ---------
435 The SETATTR protocol command has been renamed to ATTR. This new command
436 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
437 attribute, DELETE to delete an attribute and LIST to list attributes of an
438 element path. Read PROTOCOL for details.
440 Added the TARGET attribute. If an element has this attribute set, it's value
441 is another element path. It's recursive too so the destination element path
442 can be an element with a TARGET attribute. Be careful of loops though.
444 Added the DUMP protocol command. It shows the in-memory document. Useful for
445 cleaning up empty elements that aren't shown with any command.
447 The "name" attribute can be used in any element but cannot be removed for the
448 root "account" element.
450 More strict element name validation for new elements.
452 Code reorganization. Protocol commands have been put in src/commands.c.
454 The LIST command won't show element values anymore unless DEBUG was defined at
455 compile time. You must use the GET command to get a value.
457 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
458 Plain text is where it's at.
460 The STORE command wont base64 encode the value. We'll leave it up to the
461 client. But it's still recommended to avoid parsing errors.
463 All of the command line options have been moved into a configuration file. By
464 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
465 alternate file. If the file doesn't exist, then some defaults will be used.
466 There is one new config option though; "cache_push" will take a list of
467 filenames as an argument. This will prompt for passwords upon startup and add
468 the file to the cache. It's a (temporary?) fix for background processes that
469 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
470 the other process needs is added to the cache.
473 PWMD v0.2
474 ---------
475 There is a library included in the archive to make interfacing the pwmd alot
476 easier. See libpwmd/README for more information.
478 A (temporary) fix for 100% CPU usage after a client connects.
480 GnuPG is no longer used for data encryption. Instead, libgcrypt will
481 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
482 need the base64 encoded key.
484 Renamed host to hostname and added sslfingerprint to the DTD.
486 Added command line option -s to specify the socket path.
488 Added command line option -d to specify where pwmd will open and save the data
489 files.
491 Renamed protocol command SET to SETATTR.
493 Added shared memory file caching. If a file is found in the cache then the
494 cached password associated with the file will be used with the OPEN command.
495 With SAVE, if there is no cached password a key is required, else the cached
496 password will be used unless there is a key argument. This also adds a new
497 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
498 Sending the SIGHUP signal to pwmd will clear the file cache.
500 Added command line option -M to disable calling mlockall(). mlock() will still
501 be used for the file cache reguardless of this option.
503 Added command line option -C to specify the file cache size. The cache size
504 must be in multiples of PAGE_SIZE.
506 Added command line option -l to enable logging to the specified file.
508 If there is a protocol command error, ERR is returned along with a protocol
509 error code and description. See src/pwmd_error.h for error codes.
511 Fix for the DELETE command and deleting an entire element tree when an invalid
512 element was in the element path.
514 Fix for the GET command and finding elements of the same name in other
515 accounts.
517 Added a manual page.
520 PWMD v0.1
521 ---------
522 Initial release.