Removed --convert and automatic conversion code.
[pwmd.git] / NEWS
blob91e07767d4b9c93debfe58665d39f14fcfcc28e5
1 PWMD v2.21
2 ----------
3 Check for glib 2.14.0 at configure time.
5 Fixed a huge bug by initalizing pth_init. Was unnoticed until I got a new
6 machine. So if things weren't working before they should now.
8 The default recursion depth when resolving target attributes is now 100.
10 Removed the KEEPALIVE status message since some commands will be unable
11 process them and cause the command to fail.
13 Added the NEWFILE status message when opening a new file.
15 COPY and MOVE command bugfixes. See ChangeLog for details.
17 Another huge bugfix: salt the passphrase to prevent dictionary attacks.
19 Require libgcrypt 1.5.0.
21 Removed the --base64 OPEN and SAVE command options.
23 Removed the --convert command line option and automatic conversion from pwmd
24 version prior to 2.14.
27 PWMD v2.20
28 ----------
29 Do as the documentation says and let CLEARCACHE always return 0 even when a
30 filename is specified.
32 Exit when there is a failure adding files to the cache on startup unless
33 the new option --ignore is passed on the command line.
35 The VERSION command now appends compile time features to the version number.
37 A few minor bugfixes. See ChangeLog for details.
40 PWMD v2.19
41 ----------
42 Changed the HELP command to send parsable data to the client (data response).
44 Fixed validating element names again. They wont allow any whitespace
45 (including newlines).
47 The "key" configuration parameter was previously reset to an empty string
48 after parsing. It is now removed completely from the configuration handle.
49 This fixes the GETCONFIG command returning an empty string. It now returns an
50 error.
52 GETCONFIG now returns GPG_ERR_UNKNOWN_OPTION rather than GPG_ERR_NO_VALUE for
53 unknown configuration options.
56 PWMD v2.18
57 ----------
58 Added OPEN and SAVE command option --inquire to use a server inquire to
59 retrieve the filename and passphrase. This lets the passphrase be more than
60 the assuan protocol line limit of 1000 bytes. This option also changes how the
61 "key_file" configuration parameter is handled when it exists for a file that
62 doesn't have a cache entry: an --inquire can be used to set the key rather
63 than returning an error.
65 Added OPEN and SAVE command option --base64 to specifiy that the passphrase is
66 Base64 encoded. The passphrase will be decoded before encryption and
67 decryption. This allows for binary keys which may be sent via an --inquire.
69 GPG_ERR_NOT_IMPLEMENTED is returned when a known pinentry command or option is
70 requested but no pinentry support was compiled in. Previously,
71 GPG_ERR_UNKNOWN_OPTION or other error was returned.
73 Fixed the CLEARCACHE command corrupting the key_cache when clearing all cache
74 entries.
76 A few other changes and cleanups. See ChangeLog for details.
79 PWMD v2.17
80 ----------
81 This version introduces command options which should be specified before
82 command arguments. The SET command which used to be the way to specify an
83 option is deprecated for the option that can be used in a command.
85 Added OPEN options --lock and --pinentry.
87 Added SAVE options --reset, --pinentry, --iterations and --cipher.
89 Added LIST options --no-recurse and --verbose.
91 Fixed a segfault in pinentry on the second try of the same client.
93 Changed how the OPEN command handles a previously opened file on failure. Now,
94 the previously opened file will be closed rather then kept open.
96 The _mtime attribute is now modified when creating root elements and with the
97 IMPORT, RENAME, COPY and MOVE commands.
99 COPY command bugfix when the source element path contained no child element
100 nodes. The node was being renamed.
102 The cipher for the data file is now properly restored during the next SAVE. It
103 always reverted back to AES256.
106 PWMD v2.16
107 ----------
108 Portability fix for systems without SO_PEERCRED.
110 Use xmlSetProp() for settings attributes. May fix something, not sure.
112 Added an "_mtime" attribute which is updated each time an element is modified.
115 PWMD v2.15
116 ----------
117 Fixed the RC_ON_LOCKED and LOCK_ON_OPEN options when opening another file
118 using the same connection.
120 Fixed cleaning up the client when it disconnects while waiting for a file
121 mutex lock. This fixes sending the STATUS_CLIENTS message to other connected
122 clients rather than having to wait for the next client connect or disconnect.
125 PWMD v2.14
126 ----------
127 Security fix for the key_file configuration parameter. Previous versions used
128 fgets() to read up to one line of key data. The problem is that it stops
129 reading at a null byte or a newline character which will truncate your key
130 data at that byte position. This can be very bad if you think you have secure
131 randomly generated key data since those bytes can be anywhere in the key file.
133 The fix is to pay attention to the log message warning about truncated key
134 data and make note of the byte position. If you were to SAVE the associated
135 data file and haven't already truncated your key_file to the mentioned byte
136 position then the next OPEN will fail. You'll can truncate the actual key_file
137 by doing:
139         head -c BYTE_OFFSET < key_file > new_key_file
141 The BYTE_OFFSET is the truncated byte position mentioned in the log message.
142 Then move the new_key_file to replace the old key_file.
144 Or you can skip that step and do:
146         echo DUMP | pwmc datafile > raw_xml
148 Then do an pwmd XML import (--import) of raw_xml file using a newly generated
149 key_file (--key-file) which may now contain null bytes or newline characters
150 without any problems. The 'pwmc' command is included with libpwmd.
153 PWMD v2.13
154 ----------
155 Fixed a segfault in the MOVE command.
157 Fixed the MOVE command to allow overwriting the destination even if the
158 destination is a parent of the source.
160 Fixed a segfault in do_assuan_command() do to an invalid free().
162 Fixed commands returning GPG_ERR_ASS_WRITE_ERROR when no keepalive timeout was
163 specified (disabled). Don't create a timeout event. Also changed the timeout
164 event error code to return GPG_ERR_TIMEOUT.
166 The default iteration_progress has changed from 0 to 1000.
168 Fixed a segfault in the COPY command that would get triggered when copying a
169 tree previously copied and the destination was to a child of the copy.
171 Changed how the SAVE command handles a specified key when encryption
172 iterations is 0. Rather than keep the iterations at 0, reset it to the global
173 iterations settings or 1 if that setting is also 0. Since a key was specified
174 it is assumed that the file should be encrypted. This prevents misuse and
175 confusion.
178 PWMD v2.12
179 ----------
180 This version changes how the elements are accessed and breaks data file
181 compatibility with previous versions. Conversion is done automatically unless
182 you have elements in your data file name "element" or attributes named "_name".
183 The reason for the change is that the XML parser doesn't like commonly used
184 characters in element names (for example, an email address or digit as the
185 first character). So the solution is to use an attribute to store the name of
186 the element and let the actual element be generic. All elements in your data
187 file will be renamed to "element" with an attribute "_name" being the original
188 element name. Be sure to make a backup copy of your data file. I hope you find
189 the change worth it.
191 Fixed creating element paths that had children of the same name as the parent.
193 Added the MOVE command. This will move an element path to another location in
194 the document. Faster than a COPY/DELETE.
196 Added client option RC_ON_LOCKED. If set, rather than sending a status message
197 when the file mutex is locked, an error code will be sent instead; stopping
198 the command.
201 PWMD v2.11
202 ----------
203 Another fix for the COPY command. This one fixes copy siblings of the source
204 element and also fixes references to a free'd pointer.
207 PWMD v2.10
208 ----------
209 Added command XPATHATTR. This will operate on attributes of the expression
210 nodeset.
212 XPATH now return GPG_ERR_ELEMENT_NOT_FOUND when the expression doens't match
213 any elements. It used to return GPG_ERR_NO_VALUE.
215 ATTR SET no longer requires a value.
217 GPG_ERR_NO_VALUE is returned from ATTR GET for attributes without a value.
220 PWMD v2.9
221 ----------
222 Don't require libassuan 2.0 anymore. Use the static library included in the
223 archive like was done before pwmd 2.2. This is needed for use with libpwmd
224 and fixes a bug with libgpg-error return codes.
226 Fixed another stupid bug with the RENAME command.
228 Added SET option LOCK_ON_OPEN to lock the file mutex after a successful OPEN
229 as if the LOCK command had been sent.
231 Added the LS protocol command to list files in data_directory.
234 PWMD v2.8
235 ----------
236 Fixed the RENAME command to handle target attributes and ambiguities.
238 Unicode fixes.
240 Fixed validating element names.
243 PWMD v2.7
244 ----------
245 Fixed the COPY command to handle root elements and to copy attributes too.
247 Fixed the RENAME command to overwrite an existing element tree of the same
248 value.
250 Since Valgrind and dmalloc don't like PTH threads --enable-debug now prints
251 out a backtrace of each allocation so finding memory leaks is easier/possible.
252 The output of xdump() shows non-freed pointers which can be found in the
253 backtrace output then processed through addr2line to find where it occured.
255 Fixed a few memory leaks.
257 Fixed handling of SIGABRT.
260 PWMD v2.6
261 ----------
262 Fixed a nasty bug that may have existed in all previous versions that would
263 cause a segfault do to an invalid return value from pth_exit().
265 The default keepalive is now 0 or disabled. It was added during testing of
266 remote connections over TLS and kept for use with libpwmd and SSH connections.
267 The development version of libssh2 has connection timeout support so there
268 really isn't any reason for doing keepalives in pwmd. This also fixes longer
269 running processes linked with libpwmd that keep a connection open but do not
270 parse status messages. pwmd would therefore kill the connection.
273 PWMD v2.5
274 ----------
275 New configuration parameter "allowed" to specify which users are allowed to
276 connect to the unix domain socket. The default is the invoking user only.
278 Fixed the IMPORT command to let it handle "target" attributes properly.
280 Let "disable_list_and_dump" be resetable during SIGHUP but only if not
281 permissive (TRUE).
284 PWMD v2.4
285 ----------
286 Reworked the IMPORT command to let it create root elements. The syntax has
287 changed to have the content as the first argument and the element path, if
288 any, as the remaining arguments after the content which is now TAB, rather
289 than space, separated.
291 Changed how the "target" attribute value is stored in the document.  Rather
292 than storing the resolved destination argument, first check to see if the
293 element path (which may contain other target attributes) is valid then store
294 the specified path as the "target" attribute value.
296 A few bugfixes. See ChangeLog for details.
299 PWMD v2.3
300 ----------
301 The DISPLAY and TERM environment variables are unset just before entering the
302 server loop. Clients wanting to use pinentry must set these options manually
303 or configure ~/.pwmd/pinentry.conf. This fixes pwmd using these variables
304 which may no longer be valid.
306 Ported to libassuan 2.0. There is no longer a static libassuan included in the
307 archive since this version supports building a DSO.
309 Fixed the COPY command copying only the the first element of the tree. How'd
310 that happen?
313 PWMD v2.2
314 ----------
315 Bugfix for pushing non-encrypted files into the cache.
318 PWMD v2.1
319 ----------
320 A new GnuPG key is being used to sign releases and git tags. The new key-id is
321 0xB140DCE2. The old key-id 0xF2B33BEF should be considered revoked do to a
322 data loss (not pwmd's fault, though).
324 Added an "age" attribute to the document element. This attribute is updated to
325 the time of the last SAVE.
327 Added support for using different ciphers when saving a data file. This adds a
328 new configuration parameter "cipher" and also adds a new option "SET CIPHER".
329 See the manual page for supported ciphers.
331 Added a new configuration parameter "log_level".
333 Added the RENAME command to rename an element.
335 Added the COPY command to copy an element tree to an element path.
337 Always use the passphrase specified with the OPEN command, if any, even when
338 the (encrypted) file has been cached.
340 Fixed converting an unencrypted data file.
342 A few portability fixes for 64-bit machines.
344 Added configuration parameter "debug_file" to log all protocol IO to the
345 specified file.
348 PWMD v2.0
349 ----------
350 This version breaks data file compatibility with previous versions but has an
351 option to convert your existing data file to the new format. See the manual
352 page about the --convert command line switch. Future versions that have data
353 file changes shouldn't have this problem.
355 Requires a C99 compiler.
357 libassuan is included statically. There is no longer an external dependency.
359 Better handling of unexpected client disconnects and status messages.
361 Added new protocol command VERSION.
363 Added new protocol commands SET and UNSET. SET replaces the old OPTION
364 command. UNSET resets an option to its default value.
366 Pinentry is used when importing, converting and pushing files from the command
367 line. It can also be disabled to use regular terminal input.
369 The file cache is a GSList rather than a mmap()'ed page of memory. This allows
370 for an unlimited number of data files but changes the CACHE status message to
371 only show the number of cached files and not any total.
373 Removed EPWMD_MAX_SLOTS, EPWMD_ERROR and EPWMD_ELOOP.
375 Added new XFER status message. This is sent after every ASSUAN_LINELENGTH
376 bytes when tranferring data lines. This adds a new configurations parameter
377 "xfer_progress".
379 Option ACL (Access Control List) support. When --enable-acl is passed to
380 configure, data files with an ACL will be retained after a SAVE or inherited
381 from the data_directory if new.
383 The ISCACHED command now checks for file existance. Returns GPG_ERR_NOT_FOUND
384 if it exists but not found in the file cache or an errno from access(2).
386 Renamed a few SET (old OPTION command) parameters to match the rcfile
387 parameter names so GETCONFIG will work better:
388         PINENTRY -> ENABLE_PINENTRY
389         TIMEOUT  -> PINENTRY_TIMEOUT
390         PATH     -> PINENTRY_PATH
392 Removed the old CLIENT option. The old NAME sub-option can be set with SET
393 NAME=VALUE.
395 Changed how GETCONFIG handles per-session option changes for some options. If
396 no file is specified and the specified option was previouly SET, then the SET
397 value is returned. Else the option for the specified file is read from the
398 configuration file.
400 GETCONFIG <filename> ITERATIONS will read the file header of the specified
401 file. Useful if using a local pinentry and you need to determine if a filename
402 is encrypted or not.
404 SET ITERATIONS requires an open file.
406 The configuration parameters "pinentry_timeout" and "enable_pinentry" can now
407 be set per-file in the configuration file.
409 Can now use both short and long command line options.
411 The CACHETIMEOUT command has had its arguments flipped to keep consistancy
412 with other commands: CACHETIMEOUT <filename> <seconds>