Non Linux 2.6 systems need to specify --disable-locking to configure.
[pwmd.git] / README
blob89e7060d90714163e3dadce255ddbed08a1a2808
1 Password Manager Daemon is a server that provides a way to securely store
2 data. The data is saved in an AES256 encrypted XML file. Here are some of the
3 features:
5     * Shared memory key cache supporting multiple files and protected with a
6       mutex.
7     * Server configuration file which supports file specific settings
8       including encryption iterations, cache expiration, and encryption key or
9       key file.
10     * Compressed data file support.
11     * Secure memory usage. PWMD will zero out memory before freeing it.
13 I needed this because I use a few applications that require the same
14 credentials but hate having to update all those configuration files to reflect
15 any changes in the account. This way, there is a central location for the
16 data.
18 Requirements:
20     pthreads     - For locking of the key cache (but see LOCKING below).
22     libassuan    - http://www.gnupg.org
23                    Protocol.
25     libgpg-error - http://www.gnupg.org
26                    Error handling.
28     glib2        - http://www.gtk.org
29                    Portability library among other things.
31     libxml2      - http://xmlsoft.org
32                    For XML parsing and data manipulation.
34     libgcrypt    - http://www.gnupg.org
35                    Encryption, decryption and hashing.
37     libz         - http://www.zlib.net version 1.2.2.1 or later
38                    For compressing the data file.
40 Debian has packages for all of these. Your distro may have them too.
43 LOCKING
44 -------
45 Key cache locking requires the pthread implementation to have pthread_mutex_t
46 as a complete data type and not contain any pointers or be a pointer itself.
47 Some operating systems (i.e., FreeBSD at least 4.6 up to 6.x) have this
48 limitation and the build will fail if --disable-locking was not specified.
50 If --disable-locking was passed to configure at compile-time, then commands
51 that write to the data file or key cache risk the chance of corruption when
52 more than one client is connected. So if possible, update your OS and see if
53 that fixes things until I rewrite pwmd to use threads exclusively.
56 You can test it out by connecting to the socket with the socat utility
57 (http://www.dest-unreach.org/socat/). Start the daemon then run socat:
59     socat GOPEN:$HOME/.pwmd/socket -
61 There is also a library available that makes it easy for other applications
62 (mail, www, etc) to use the server. Read COMMANDS for protocol commands and
63 syntax. Send me patches or any ideas you may have.
65 Ben Kibbey <bjk@luxsci.net>
66 http://bjk.sourceforge.net/pwmd/