Don't set the sockfd to non-blocking.
[libpwmd.git] / README
blobab744ffa9e4d053d4f37487e154bc0fbdc42bd43
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.
5 I needed this because I use a few applications that require the same
6 credentials but hate having to update all those configuration files to reflect
7 any changes. The data file can be edited once with a pwmd client and patched
8 applications can retrieve the updated shared info. See the "Target Attribute"
9 in the documentation for details.
11 Some of the features include:
13     * Multi-threaded. More than one client may access the data at the same
14       time
15     * OpenPGP encrypted XML data files via GnuPG with smartcard support
16     * Remote network connctions via libpwmd over GnuTLS or SSH via a proxy
17     * Configuration file which supports file specific settings including:
18       cache expiration, key file and more
19     * Logging to file and/or syslog
20     * Secure memory usage. Pwmd will zero out memory before freeing it and
21       also has the option to lock the entire process in RAM to avoid swapping
22       the data to virtual memory
25 Requirements:
26 -------------
27     C99 compiler - http://www.gnu.org/software/gcc
28                    Has been tested to work. Others should work fine, too.
30     libassuan    - ftp://ftp.gnupg.org/gcrypt/libassuan
31                    Protocol. Version 2.0.2 or later is required. Version
32                    2.1.0 or later is recommended for UDS peer credential
33                    checking on OS's other than Linux.
35     libgpg-error - http://www.gnupg.org
36                    Error handling. Version 1.18 or later is required.
38     gpg-agent    - http://www.gnupg.org
39                    Keypair generation, decryption and caching. Version 2.1.15
40                    or later is required.
42     pinentry     - http://www.gnupg.org
43                    Normally required for passphrase retrieval from gpg-agent.
45     libxml2      - http://xmlsoft.org
46                    Required for XML parsing and data manipulation.
48     libgpgme     - http://www.gnupg.org
49                    For data file crypto operations. Version 1.7.0 or later is
50                    required.
52     libgcrypt    - http://www.gnupg.org
53                    Cache encryption and hashing. Version 1.5.0 or later is
54                    required.
56     libgnutls    - http://www.gnu.org/software/gnutls/
57                    For encrypted connections over a TCP network. Version
58                    3.3.0 or later. Optional.
61 Installation:
62 -------------
63 ./configure && make install
65 Typing 'pwmd' will start the server and wait for connections to
66 ~/.pwmd/socket.  Passing --allow-preset-passphrase to gpg-agent is recommended
67 and gpg-agent option --allow-loopback-pinentry is required if using a keyfile
68 or connecting over TLS. These options can be added to the gpg-agent.conf
69 configuration file in the gnupg home directory (~/.pwmd/.gnupg). See the
70 gpg-agent(1) manual page for details about these options and the pwmd
71 documentation for details about the location of the GnuPG home directory.
74 Connecting:
75 -----------
76 Any program that can connect to a UNIX domain socket will work although using
77 pwmc, a client included with libpwmd, is recommended:
79     echo command | pwmc filename
80 or interactively
81     pwmc filename
83     socat UNIX-CONNECT:$HOME/.pwmd/socket -
85 A much more user-friendly full featured client QPwmc is also available. It has
86 a nice Qt GUI and is much easier to use. See http://qpwmc.sourceforge.net/ for
87 details.
89 Please read pwmd.info manual for protocol commands, syntax and
90 configuration details. A HTML version is also available in doc/pwmd.html.
93 GIT Repository
94 --------------
95 There is a public GIT repository available at repo.or.cz. Anonymous checkouts
96 can be done by doing:
98     git clone git://repo.or.cz/pwmd.git
99     or from the mirror:
100     git clone https://gitlab.com/bjk/pwmd.git
102 The gitweb interface can be viewed at:
104     http://repo.or.cz/w/pwmd.git
105     or
106     https://gitlab.com/bjk/pwmd
109 Mailing lists
110 -------------
111 Please send bug reports, questions or feature requests to
112 https://lists.sourceforge.net/lists/listinfo/pwmd-devel
114 The same for libpwmd may be sent to
115 https://lists.sourceforge.net/lists/listinfo/libpwmd-devel
118 Ben Kibbey <bjk@luxsci.net>
119 http://pwmd.sourceforge.net/