Prevent a memory leak when parsing pinentry.conf.
[pwmd.git] / README
blob7a3560125c61d1d151350062427006a75cbbc40e
1 Password Manager Daemon is a server that provides a way for applications to
2 securely store and retrieve data at a centralized location. The data is stored
3 in an XML file and clients connect and send commands to manipulate the data.
4 Some of the features include:
6     * Multi-threaded. More than one client may access the data at the same
7       time.
8     * Optional AES256 data file encryption.
9     * A key cache so clients won't need to enter a key each time a file is
10       opened or saved.
11     * Key retrieval via pinentry(1).
12     * Local Unix Domain Socket connections which can safely be accessed
13       remotely over an SSH channel when using libpwmd(3).
14     * Configuration file which supports file specific settings including:
15       encryption iterations, cache expiration and encryption key or key file
16       and more.
17     * Compressed data file support.
18     * Logging to file and/or syslog.
19     * Secure memory usage. PWMD will zero out memory before freeing it and
20       also has the option to lock the entire process in RAM to avoid swapping
21       the data to virtual memory.
23 I needed this because I use a few applications that require the same
24 credentials but hate having to update all those configuration files to reflect
25 any changes. This way, there is a central location for the needed data.
27 Requirements:
28 -------------
29     C99 compiler - http://www.gnu.org/software/gcc
30                    Is a good choice.
32     libpth2      - http://www.gnu.org/software/pth/pth.html
33                    Portable multi-threading library.
35     libgpg-error - http://www.gnupg.org
36                    Error handling.
38     glib2        - http://www.gtk.org
39                    Portability library among other things.
41     libxml2      - http://xmlsoft.org
42                    For XML parsing and data manipulation.
44     libgcrypt    - http://www.gnupg.org
45                    Encryption, decryption and hashing.
47     libz         - http://www.zlib.net
48                    For compressing the data file. Version 1.2.2.1 or later is
49                    required.
51     pinentry     - http://www.gnupg.org/aegypten
52                    There are various interfaces for password entry:
53                    console/curses, X11/GTK2, X11/QT. The X11 versions also
54                    support console/curses. Version 0.7.5 or later is required
55                    unless --disable-pinentry is passed to ./configure.
57     cracklib2    - http://sourceforge.net/projects/cracklib
58                    If --enable-quality is passed to ./configure then a
59                    password quality meter is used with pinentry. Optional.
61     libacl       - ftp://acl.bestbits.at
62                    To retain an ACL for a data file. Optional.
65 Connecting:
66 -----------
67 Any program that can connect to a UNIX domain socket will work:
69     socat UNIX-CONNECT:$HOME/.pwmd/socket -
70     echo command | pwmc filename
72 Libpwmd is a library making it easy for applications to use pwmd. There is
73 also a command line pwmd client "pwmc" included. You can find it at the pwmd
74 homepage.  There are also some patches already written (some could use
75 improvement) for a few apps too.
78 GIT Repository
79 --------------
80 There is a public GIT repository available at repo.or.cz. Anonymous checkouts
81 can be done by:
83     git clone git://repo.or.cz/pwmd.git
85 The gitweb interface can be viewed at http://repo.or.cz/w/pwmd.git.
88 Read COMMANDS for protocol commands and syntax. Feel free to send me any
89 patches, bug reports or feature requests.
91 Ben Kibbey <bjk@luxsci.net>
92 http://bjk.sourceforge.net/pwmd/