Version 1.7.
[pwmd.git] / NEWS
blob5c09d45e1d3f69700fdb0879d7bbd97f7121e4ac
1 PWMD v1.7
2 ----------
3 Added the LOCK and UNLOCK commands.
5 $DISPLAY bugfix. Use the --display pinentry command line option.
7 Fixed a xmlError segfault.
10 PWMD v1.6
11 ----------
12 IMPORT command bugfix. It now overwrites the node of the same name as the root
13 node of the content argument.
15 When a client sends OPTION PINENTRY, the option value is valid for the current
16 session only, and not any future sessions of the same file.
19 PWMD v1.5
20 ----------
21 Added the "backup" configuration parameter. When true, the default, a backup
22 of the opened file will be saved in "data_directory" when a SAVE command is
23 sent. The filename will have the ".backup" extension appended to it.
25 Added the XPATH command. This command can retrieve a result of the specified
26 expression or set a value to the result of the specified expression.
28 Added the IMPORT command. This is like STORE but reads real XML data and
29 stores it at the specified element path.
31 A few bugfixes. See ChangeLog for details.
34 PWMD v1.4
35 ----------
36 Ported to libPth2. This fixes key cache locking portability and removes the
37 --disable-locking 'configure' option.
39 Added configuration parameter "syslog" to enable logging to the syslog daemon
40 with facility LOG_DAEMON and priority LOG_INFO.
42 When the key cache changes, send the CACHE status message to each connected
43 client.
45 Reuse libgpg-error error codes more often. If your using libpwmd, please
46 update to libpwmd5 otherwise error codes will be wrong.
48 Added configuration option "keepalive" to specify the interval, in seconds, to
49 send the new KEEPALIVE status message.
51 Added pinentry(1) support. This adds a new configuration parameter
52 "enable_pinentry" (the default is enabled), and a few options that can be set
53 with the new OPTION command: PATH, TTYNAME, TTYTYPE, DISPLAY, TITLE, PROMPT,
54 DESC and PINENTRY. Read COMMANDS for details.
56 Added OPTION CLIENT NAME=VALUE to let clients set a string that is associated
57 with the connection thread ID. This may be useful for debugging log messages.
59 The "iterations" configuration parameter can be set to -1 to disable
60 encryption. Setting to 0, the default, will still encrypt with 1 iteration (I
61 know it doesn't make sense, but it's needed for compatibility with previous
62 data files).
64 Empty (null) keys are now allowed.
66 Changed the "default" configuration file section to "global". Be sure to
67 update your config file(s).
69 A few bug fixes. See ChangeLog for details.
72 PWMD v1.3
73 ----------
74 More safety checks when writing the data file after a SAVE command.
76 Added configuration parameter "socket_perms" to set the permissions of the
77 created socked overriding any umask setting. May be useful if a client
78 other than the user who invoked pwmd needs to connect (i.e., ACL's).
80 Added 'configure' option --disable-locking to disable key cache mutex locking.
81 Some systems don't have a complete pthread_mutex_t data type which is needed
82 rather than a pointer (FreeBSD and others probably). Note that using this
83 option increases the risk of key cache and data file corruption when more than
84 one client is using pwmd at the same time and save to the same file. If
85 possible, upgrade your OS and see if this fixes things.
87 A few bugfixes. See ChangeLog for details.
90 PWMD v1.2
91 ----------
92 Added locking of the file/key cache with certain commands. This prevents other
93 clients from modifying the cache until the lock is released. This adds a new
94 pthread compile time dependency.
96 Zlib version 1.2.2.1 or later is now a requirement.
99 PWMD v1.1
100 ----------
101 Added configuration parameter "recursion_depth". This specifies the maximum
102 number of times to follow a "target" attribute for a single element. The
103 default is 20.
105 When creating a "target" attribute, each element in the element path value is
106 no longer modified with the literal '!' character at all. You need to specify
107 the literal instead. This keeps the syntax more consistent with the other
108 commands.
110 Added the COMPRESS and DECOMPRESS status messages. Both show the bytes
111 processed so far, and the total bytes. In order to see the total after
112 upgrading from a previous version you need to save the data file once.
114 Changed the PROGRESS status message to ENCRYPT and DECRYPT.
116 The "disable_mlockall" configuration parameter now defaults to "true". Saves
117 RAM and is overkill for most since each memory deallocation is cleared before
118 being freed. The file cache is still locked in RAM though (if possible).
120 Bugfixes. See ChangeLog for details.
123 PWMD v1.0
124 ----------
125 EPWMD_FILE_NOT_FOUND is no longer used. It is up to the client to determine
126 if the file exists by using the GETCONFIG command along with 'data_directory'.
128 The CLEARCACHE command will always succeed (return 0) even if the file is not
129 found.
131 A few minor bugfixes.
134 PWMD v0.12
135 ----------
136 Added gettext support. Translations welcome.
138 Strip the first '!' of a newly created element. If there's a following one
139 it's an error. This is to avoid syntax errors and confusion with other
140 commands and element paths.
142 Only show the number of iterations so far when showing the PROGRESS status
143 message. The client can get the percentage by calculating the
144 "iteration_progress" with GETCONFIG.
146 Fixed a huge memory leak with (de)compression.
148 The cache status message format has changed to only show the used and
149 available slots and without any text strings to make it easier for clients to
150 parse.
152 SIGUSR1 is caught in the child process. This allows for reloading of the
153 configuration file.
155 Fixed pushing files and xml import with compression.
157 Added --enable-mem-debug to use the standard memory allocators. Valgrind seems
158 to work better this way.
160 Fixed a few memory leaks.
162 Fixed creating invalid XML elements. Elements must not begin with punctuation
163 or digit and not contain any whitespace.
165 The output of the LIST command is no longer sorted. Leave it up to the client.
168 PWMD v0.11
169 ----------
170 Added the GETCONFIG command. This will return a value for a configuration
171 parameter for the opened file or the default value if no file has been opened.
172 The "key" and "key_file" parameters are ignored.
174 Rewrote how element handling is done. No longer uses an xmlTextReader but
175 accesses the xmlDocPtr nodes directly.
177 The STORE command will no longer overwrite the element tree of the last
178 element in the specified element path. Instead it will set the content as
179 usual and keep the child nodes. This affects how GET handles empty elements.
180 GET will return EPWMD_EMPTY instead of EPWMD_TRAILING_ELEMENT. The STORE
181 command can also store content in a root element (account) and remove content
182 or store an empty element by not specifying any content after the last TAB in
183 the element path.
185 Each element in an element path can now be prefixed with the literal '!'
186 character. This allows for following targets of elements other than the root
187 element.
189 The LIST command will now shows all reachable elements including target
190 elements for the specified element path. It also prefixes each element with
191 the literal '!' when needed.
193 Added support for compressing data files before encryption. This adds the
194 "compression_level" configuration parameter. The default is 6 and setting to 0
195 will disable.
197 A couple of bug fixes.
200 PWMD v0.10
201 ----------
202 Fixed libgpg-error descriptions. The errors that pwmd uses for bad syntax and
203 invalid keys etc. used to return an error code that used
204 GPG_ERR_SOURCE_DEFAULT as the source. GPG_ERR_SOURCE_USER_1 is what pwmd uses
205 now. This breaks compatibility with clients that make use of the error codes
206 (i.e., libpwmd). Be sure to update.
208 Non-option arguments on the command line are files to cache upon startup. This
209 acts like the 'cache_push' configuration parameter.
211 The location of the default configuration file is now ~/.pwmd/config and the
212 default data directory is ~/.pwmd/data, and the default log file ~/.pwmd/log.
213 This fixes clients opening these non-data filenames.
215 Fixed default configuration values when an rcfile doesn't have one.
217 The configuration parameters 'key' and 'key_file' now check to make sure the
218 key is valid before adding it to the cache like 'cache_push' does.
220 Clear the file cache and free the memlist on SIGABRT when debugging is not
221 enabled.
223 Added command line option -b to fork pwmd to the background.
225 Added configuration parameter "iteration_progress". pwmd will send the client
226 a status message showing the percent of iterations that are complete while
227 encrypting or decrypting a data file. The default is 0 which disables sending
228 status messages.
230 Sending SIGUSR1 to pwmd will reload the configuration file.
232 New protocol command REALPATH. This will resolve any "target" attribute for
233 all elements in the specified element path and return the result.
235 Some portability (FreeBSD and maybe others) fixes.
237 SIGTERM and SIGABRT are now properly caught in a child process.
239 Bugfixes.
242 PWMD v0.9
243 ---------
244 Now uses the assuan protocol. This requires libassuan and libgpg-error.
246 Clear the shared memory on exit.
248 The CACHE sub-commands ISCACHED, CLEARCACHE and CACHETIMEOUT have been made
249 into their own commands removing the CACHE command itself.
251 The RESETCACHE command and the cache_reset_timeout configuration parameter
252 have been removed. The cached files timeout is reset to it's configured value
253 (or set value with CACHETIMEOUT) after each OPEN or SAVE command.
255 The OPEN command can open another file using the same connection. Beware
256 though that if the OPEN of the new file fails, no file will be open at all.
258 When OPEN'ing a new file with a specified key, cache both the filename and
259 key. Before you had to SAVE to cache the key.
261 All commands will check if the file has been modified before continueing. Not
262 the cache commands though.
264 Don't unlink() a socket filename that wasn't created by pwmd.
266 Fixed allocating more slots than needed.
268 The commands GET, STORE, DELETE and ATTR make use of the "target" attribute
269 unless the element path argument is prefixed with a '!'. The LIST command
270 will support "target" in the next release, hopefully.
272 Accounts names can no longer begin with a '!' character to avoid problems with
273 the "target" attribute.
275 Removed EPWMD_ROOT_TEXT_ELEMENT. The STORE command will return
276 EPWMD_COMMAND_SYNTAX instead.
278 Added command line option -D and configuration parameter
279 "disable_list_and_dump". When specified or enabled, the LIST and DUMP protocol
280 commands will return EPWMD_EMPTY_ELEMENT.
283 PWMD v0.8
284 ---------
285 Use AM_XML2_PATH() for finding libxml2.
287 Split pwmd and libpwmd into their own projects. Both can be found at
288 http://bjk.sourceforge.net/pwmd/.
291 PWMD v0.7
292 ---------
293 cache_push and working directory bugfix.
295 Added two new configuration options "key" and "key_file". Works with
296 cache_push too.
298 Added a boolean "cache_reset_timeout" configuration option to reset the timer
299 for a cached key when the OPEN or SAVE commands are used.
301 Added two new protocol commands CACHE RESET which clears only the key for the
302 specified file and CACHE RESETALL which clears the key for all files.
304 The "name" and "target" attributes are now case-sensitive.
306 The value of an element path that contains a "target" attribute can be
307 obtained by prefixing the account element with a '!'.
310 PWMD v0.6
311 ---------
312 Fix for the LIST command. When an element path was specified and the document
313 had following elements in the tree the following elements would be shown.
315 Added the CACHE TIMEOUT command to specify the lifetime of a cached file in
316 seconds. This adds a new configuration file setting "cache_timeout".
318 Added per-file settings in the configuration file. A file section is declared
319 by placing the filename in braces. Only the "iterations" and "cache_timeout"
320 settings are used in a file section.
322 No longer chdir() to the data directory.
325 PWMD v0.5
326 ---------
327 If a file size is 0 then CACHE ISCACHED will return EPWMD_FILE_NOT_FOUND.
329 Write a structure to the data file which specifies the iterations and IV. This
330 lets you open a file that had a different iteration setting than the current
331 setting. Breaks file compatibility with previous versions for hopefully the
332 last time.
334 cache_push with an invalid password bugfix.
336 Added command line option -I to import an XML file and write the encrypted
337 data to stdout.
340 PWMD v0.4
341 ---------
342 Use AES-256-CBC to store the data file. This breaks file compatibility with
343 older versions. Sorry.
345 The ATTR protocol command has a new GET sub-command to get an attribute value
346 for an element path.
348 The LIST protocol command can now take an element path.
350 The DUMP command will format it's output.
352 Use MAP_ANONYMOUS|MAP_SHARED mmap() flags on Linux 2.4+. This won't create a
353 file in /dev/shm. #define MMAP_ANONYMOUS_SHARED in config.h if your OS
354 supports this.
356 Fixed closing file descriptors.
358 Fixed some memory leaks.
360 The contents of all memory allocated by Glib, libXML and libgcrypt is cleared
361 before free()ing.
363 Added an "iterations" configuration parameter. This specifies the amount of
364 times to encrypt the data to prevent dictionary attacks. Idea borrowed from
365 aespipe.
368 PWMD v0.3
369 ---------
370 The SETATTR protocol command has been renamed to ATTR. This new command
371 includes three new sub-commands: SET, DELETE and LIST, to SET or update an
372 attribute, DELETE to delete an attribute and LIST to list attributes of an
373 element path. Read PROTOCOL for details.
375 Added the TARGET attribute. If an element has this attribute set, it's value
376 is another element path. It's recursive too so the destination element path
377 can be an element with a TARGET attribute. Be careful of loops though.
379 Added the DUMP protocol command. It shows the in-memory document. Useful for
380 cleaning up empty elements that aren't shown with any command.
382 The "name" attribute can be used in any element but cannot be removed for the
383 root "account" element.
385 More strict element name validation for new elements.
387 Code reorganization. Protocol commands have been put in src/commands.c.
389 The LIST command won't show element values anymore unless DEBUG was defined at
390 compile time. You must use the GET command to get a value.
392 The OPEN and SAVE protocol commands no longer expect a base64 encoded key.
393 Plain text is where it's at.
395 The STORE command wont base64 encode the value. We'll leave it up to the
396 client. But it's still recommended to avoid parsing errors.
398 All of the command line options have been moved into a configuration file. By
399 default pwmd will look for it in ~/.pwmdrc. You can use -f to specify an
400 alternate file. If the file doesn't exist, then some defaults will be used.
401 There is one new config option though; "cache_push" will take a list of
402 filenames as an argument. This will prompt for passwords upon startup and add
403 the file to the cache. It's a (temporary?) fix for background processes that
404 don't have an attached tty (see libpwmd/KnownBugs). Just make sure the file
405 the other process needs is added to the cache.
408 PWMD v0.2
409 ---------
410 There is a library included in the archive to make interfacing the pwmd alot
411 easier. See libpwmd/README for more information.
413 A (temporary) fix for 100% CPU usage after a client connects.
415 GnuPG is no longer used for data encryption. Instead, libgcrypt will
416 encrypt/decrypt the data with AES-128 key. The OPEN and SAVE commands will
417 need the base64 encoded key.
419 Renamed host to hostname and added sslfingerprint to the DTD.
421 Added command line option -s to specify the socket path.
423 Added command line option -d to specify where pwmd will open and save the data
424 files.
426 Renamed protocol command SET to SETATTR.
428 Added shared memory file caching. If a file is found in the cache then the
429 cached password associated with the file will be used with the OPEN command.
430 With SAVE, if there is no cached password a key is required, else the cached
431 password will be used unless there is a key argument. This also adds a new
432 protocol command CACHE with 3 subcommands CLEARALL, CLEAR and ISCACHED.
433 Sending the SIGHUP signal to pwmd will clear the file cache.
435 Added command line option -M to disable calling mlockall(). mlock() will still
436 be used for the file cache reguardless of this option.
438 Added command line option -C to specify the file cache size. The cache size
439 must be in multiples of PAGE_SIZE.
441 Added command line option -l to enable logging to the specified file.
443 If there is a protocol command error, ERR is returned along with a protocol
444 error code and description. See src/pwmd_error.h for error codes.
446 Fix for the DELETE command and deleting an entire element tree when an invalid
447 element was in the element path.
449 Fix for the GET command and finding elements of the same name in other
450 accounts.
452 Added a manual page.
455 PWMD v0.1
456 ---------
457 Initial release.