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