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 It mimics a filesystem in many ways with commands to store, copy, move and
7 There are quite a few password managers around and pwmd is similar to most.
8 The need for pwmd is that gnupg keys stored on a smartcard cannot be cached in
9 gpg-agent and therefore each access to a datafile would require the smartcard
10 present to decrypt it. Pwmd decrypts the datafile once and caches it in memory
11 and has it's own cache expiration settings rather than using the gpg-agent
14 You may also find pwmd useful if you have a few applications that require the
15 same credentials but hate having to update all those configuration files to
16 reflect any changes. The data file can be edited once with a pwmd client and
17 other clients can retrieve the updated shared info. Similar to how a symbolic
18 link on a filesystem works. See the "Target Attribute" in the documentation
21 Some other features include:
23 * Multi-threaded. More than one client may access the data at the same
25 * OpenPGP encrypted XML data files via GnuPG with smartcard support
26 * Remote network connections via libpwmd over GnuTLS or SSH via a proxy
27 * Configuration file which supports file specific settings including:
28 cache expiration, passphrase file and more
29 * Logging to file and/or syslog
30 * Secure memory usage. Pwmd will zero out memory before freeing it and
31 also has the option to lock the entire process in RAM to avoid swapping
32 the data to virtual memory
33 * Per file and element ACL's including connections over TLS
38 C99 compiler - http://www.gnu.org/software/gcc
39 Has been tested to work. Others should work fine, too.
41 libassuan - ftp://ftp.gnupg.org/gcrypt/libassuan
42 Protocol. Version 2.0.2 or later is required. Version
43 2.1.0 or later is recommended for UDS peer credential
44 checking on OS's other than Linux.
46 libgpg-error - http://www.gnupg.org
47 Error handling. Version 1.18 or later is required.
49 gpg-agent - http://www.gnupg.org
50 Keypair generation, decryption and caching. Version 2.1.15
53 pinentry - http://www.gnupg.org
54 Normally required for passphrase retrieval from gpg-agent.
56 libxml2 - http://xmlsoft.org
57 Required for XML parsing and data manipulation.
59 libgpgme - http://www.gnupg.org
60 For data file crypto operations. Version 1.7.0 or later is
63 libgcrypt - http://www.gnupg.org
64 Cache encryption and hashing. Version 1.5.0 or later is
67 libgnutls - http://www.gnu.org/software/gnutls/
68 For encrypted connections over a TCP network. Version
69 3.3.0 or later. Optional.
74 ./configure && make install
76 For TLS support, pass --enable-gnutls to ./configure.
78 Typing 'pwmd' will start the server and wait for connections to
79 ~/.pwmd/socket. Passing --allow-preset-passphrase to gpg-agent is recommended
80 and gpg-agent option --allow-loopback-pinentry is required if using a keyfile
81 or connecting over TLS. These options can be added to the gpg-agent.conf
82 configuration file in the gnupg home directory (~/.pwmd/.gnupg). See the
83 gpg-agent(1) manual page for details about these options and the pwmd
84 documentation for details about the location of the GnuPG home directory.
89 Any program that can connect to a UNIX domain socket will work although using
90 pwmc, a client included with libpwmd, is recommended:
92 echo command | pwmc filename
96 socat UNIX-CONNECT:$HOME/.pwmd/socket -
98 A much more user-friendly full featured client QPwmc is also available. It has
99 a nice Qt GUI and is much easier to use. See http://qpwmc.sourceforge.net/ for
102 Please read pwmd.info manual for protocol commands, syntax and
103 configuration details. A HTML version is also available in doc/pwmd.html.
108 There is a public GIT repository available at repo.or.cz. Anonymous checkouts
109 can be done by doing:
111 git clone git://repo.or.cz/pwmd.git
113 git clone https://gitlab.com/bjk/pwmd.git
115 The gitweb interface can be viewed at:
117 http://repo.or.cz/w/pwmd.git
119 https://gitlab.com/bjk/pwmd
124 Please send bug reports, questions or feature requests to
125 https://lists.sourceforge.net/lists/listinfo/pwmd-devel
127 The same for libpwmd may be sent to
128 https://lists.sourceforge.net/lists/listinfo/libpwmd-devel
131 Ben Kibbey <bjk@luxsci.net>
132 http://pwmd.sourceforge.net/