Add some docs about using gpg-agent with pwmd.
[pwmd.git] / doc / pwmd.html
blob6a30ec43c24e2a222e4f725daf33bb8c5ab8f8cd
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
4 <head>
5 <title>PWMD Manual</title>
7 <meta name="description" content="PWMD Manual">
8 <meta name="keywords" content="PWMD Manual">
9 <meta name="resource-type" content="document">
10 <meta name="distribution" content="global">
11 <meta name="Generator" content="makeinfo">
12 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
13 <link href="#Top" rel="start" title="Top">
14 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
15 <link href="dir.html#Top" rel="up" title="(dir)">
16 <style type="text/css">
17 <!--
18 a.summary-letter {text-decoration: none}
19 blockquote.indentedblock {margin-right: 0em}
20 blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
21 blockquote.smallquotation {font-size: smaller}
22 div.display {margin-left: 3.2em}
23 div.example {margin-left: 3.2em}
24 div.lisp {margin-left: 3.2em}
25 div.smalldisplay {margin-left: 3.2em}
26 div.smallexample {margin-left: 3.2em}
27 div.smalllisp {margin-left: 3.2em}
28 kbd {font-style: oblique}
29 pre.display {font-family: inherit}
30 pre.format {font-family: inherit}
31 pre.menu-comment {font-family: serif}
32 pre.menu-preformatted {font-family: serif}
33 pre.smalldisplay {font-family: inherit; font-size: smaller}
34 pre.smallexample {font-size: smaller}
35 pre.smallformat {font-family: inherit; font-size: smaller}
36 pre.smalllisp {font-size: smaller}
37 span.nolinebreak {white-space: nowrap}
38 span.roman {font-family: initial; font-weight: normal}
39 span.sansserif {font-family: sans-serif; font-weight: normal}
40 ul.no-bullet {list-style: none}
41 -->
42 </style>
45 </head>
47 <body lang="en">
48 <h1 class="settitle" align="center">PWMD Manual</h1>
53 <a name="Top"></a>
54 <div class="header">
55 <p>
56 Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
57 </div>
58 <h1 class="node-heading">Top</h1>
61 <table class="menu" border="0" cellspacing="0">
62 <tr><td align="left" valign="top">&bull; <a href="#Introduction" accesskey="1">Introduction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Overview of pwmd.
63 </td></tr>
64 <tr><td align="left" valign="top">&bull; <a href="#Access-Control" accesskey="2">Access Control</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">ACL of a single XML element.
65 </td></tr>
66 <tr><td align="left" valign="top">&bull; <a href="#Invoking" accesskey="3">Invoking</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command line options.
67 </td></tr>
68 <tr><td align="left" valign="top">&bull; <a href="#Configuration" accesskey="4">Configuration</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Configuration file options.
69 </td></tr>
70 <tr><td align="left" valign="top">&bull; <a href="#Commands" accesskey="5">Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Protocol commands.
71 </td></tr>
72 <tr><td align="left" valign="top">&bull; <a href="#Status-Messages" accesskey="6">Status Messages</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Status lines and their meaning.
73 </td></tr>
74 <tr><td align="left" valign="top">&bull; <a href="#Target-Attribute" accesskey="7">Target Attribute</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A kind of symbolic link.
75 </td></tr>
76 <tr><td align="left" valign="top">&bull; <a href="#Other-Attributes" accesskey="8">Other Attributes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other attributes specially handled by pwmd.
77 </td></tr>
78 <tr><td align="left" valign="top">&bull; <a href="#Signals" accesskey="9">Signals</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Signals known to pwmd.
79 </td></tr>
80 <tr><td align="left" valign="top">&bull; <a href="#Concept-Index">Concept Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of concepts.
81 </td></tr>
82 </table>
84 <hr>
85 <a name="Introduction"></a>
86 <div class="header">
87 <p>
88 Next: <a href="#Access-Control" accesskey="n" rel="next">Access Control</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
89 </div>
90 <a name="Overview-of-pwmd"></a>
91 <h2 class="chapter">1 Overview of <code>pwmd</code></h2>
98 <p><em>Password Manager Daemon</em> (or <code>pwmd</code>) is a server that
99 applications connect to and send commands to put and get data
100 that is stored in an OpenPGP encrypted XML document. It mimics a
101 filesystem in a lot of ways including per element ACL&rsquo;s, but also has
102 the advantage of remote connections over TLS and a document cache. The
103 document cache is needed for a data file encrypted with keys stored on a
104 smartcard.
105 </p>
106 <p>The server uses the Assuan protocol (See <a href="http://www.gnupg.org/documentation/manuals/assuan/Implementation.html#Implementation">(assuan)Implementation</a>) which
107 is the same used by <code>gpg-agent</code>, <code>pinentry</code> and
108 <code>scdaemon</code>. It also uses <cite>libgpg-error</cite> for error reporting with
109 <var>GPG_ERR_SOURCE_USER_1</var> being the error source.
110 </p>
112 <p>The XML document uses the following DTD:
113 </p>
114 <div class="example">
115 <pre class="example"> &lt;?xml version=&quot;1.0&quot;?&gt;
116 &lt;!DOCTYPE pwmd [
117 &lt;!ELEMENT pwmd (element*)&gt;
118 &lt;!ATTLIST element _name CDATA #REQUIRED&gt;
119 ]&gt;
120 </pre></div>
122 <p>The <code>pwmd</code> element is the document root node while all other elements
123 of the document have the name <code>element</code> with an attribute <code>_name</code>
124 whose value uniquely identifies the element at the current element tree depth.
125 It is done this way to avoid XML parsing errors for commonly used
126 characters. A URL for example would be an invalid XML element
127 since the URI contains a &lsquo;<samp>:</samp>&rsquo; which is also the XML
128 namespace separator.
129 </p>
130 <p>As mentioned, an element name must be unique for the current element tree
131 depth. You cannot have two elements containing the same <code>_name</code> attribute
132 value. <code>pwmd</code> will stop searching for an element of an <em>element
133 path</em> at the first match then continue searching for the next element of the
134 element path beginning at the child node of the matched element.
135 </p>
136 <p>An <em>element path</em> is a <code>TAB</code> delimited character string where each
137 <code>TAB</code> separates each element in the path. For example, the element path
138 <code>a<code>TAB</code>b<code>TAB</code>c</code> has the following XML document structure:
139 </p>
140 <div class="example">
141 <pre class="example"> &lt;pwmd&gt;
142 &lt;element _name=&quot;a&quot;&gt;
143 &lt;element _name=&quot;b&quot;&gt;
144 &lt;element _name=&quot;c&quot;&gt;
145 [... element value or content ...]
146 &lt;/element&gt;
147 &lt;/element&gt;
148 &lt;/element&gt;
149 &lt;/pwmd&gt;
150 </pre></div>
152 <p>The only restriction of an element name is that it contain no whitespace
153 characters.
154 </p>
155 <hr>
156 <a name="Access-Control"></a>
157 <div class="header">
159 Next: <a href="#Invoking" accesskey="n" rel="next">Invoking</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
160 </div>
161 <a name="Access-Control-1"></a>
162 <h2 class="chapter">2 Access Control</h2>
164 <p>Like a filesystem has an ACL to grant or limit access to directories or
165 files for a specific user or group, <code>pwmd</code> can limit a local user,
166 group or a TLS connection to a specific element path. This is done by
167 storing an ACL in the element attribute <var>_acl</var>. Its syntax is
168 similar to the <var>allowed</var> configuration parameter (see <a href="#Configuration">Configuration</a>)
169 with the exception that a TLS fingerprint hash is prefixed with a
170 <code>#</code>.
171 </p>
172 <p>Access is denied for all users that are not in the ACL of an element
173 with the exception of an invoking user (see the <var>invoking_user</var>). The
174 connected client must be in the ACL for each element in an element path
175 otherwise an error is returned. As an example:
176 </p>
177 <div class="example">
178 <pre class="example">&lt;element _name=&quot;test&quot; _acl=&quot;username,-@wheel,root,#ABCDEF&quot;&gt;
179 &lt;element _name=&quot;child&quot;/&gt;
180 &lt;/element&gt;
181 </pre></div>
183 <p>The user <code>username</code> would be allowed access to the <code>test</code> element
184 but not if it is a member of the <code>wheel</code> group although, the <code>root</code>
185 user, who may be a member of the <code>wheel</code> group, is allowed. The SHA-256
186 TLS fingerprint hash <code>#ABCDEF</code> is also allowed. No users other than an
187 <var>invoking_user</var> are allowed access to the <code>child</code> element.
188 </p>
189 <p>The first user listed in the ACL is considered the owner of the
190 element. This determines which clients may modify an <var>_acl</var> attribute and
191 store content for an element. An <var>invoking_user</var> may always modify an
192 ACL.
193 </p>
194 <hr>
195 <a name="Invoking"></a>
196 <div class="header">
198 Next: <a href="#Configuration" accesskey="n" rel="next">Configuration</a>, Previous: <a href="#Access-Control" accesskey="p" rel="prev">Access Control</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
199 </div>
200 <a name="Invoking-pwmd"></a>
201 <h2 class="chapter">3 Invoking <code>pwmd</code></h2>
205 <p><code>pwmd</code> uses GpgME for encryption, decryption and signing of the
206 OpenPGP data file. GpgME itself makes use of <code>gpg</code> for these
207 operations so some configuration of <code>gpg</code> may be needed. Pwmd spawns
208 a separate <code>gpg-agent</code> process when <var>gpg_homedir</var>
209 (see <a href="#Configuration">Configuration</a>) is not set to an instance of an already running
210 gpg-agent. Any <code>gpg</code> configuration options that you need set should be
211 put in <var>~/.pwmd/.gnupg/gpg.conf</var> or the <var>gpg.conf</var> file located in
212 <var>gpg_homedir</var>. The same is true for the <var>gpg-agent.conf</var> file to set
213 any required <code>gpg-agent</code> options.
214 </p>
215 <p>It is recommended to pass the <samp>--allow-preset-passphrase</samp>
216 option to <code>gpg-agent</code>. Doing so allows <code>pwmd</code>
217 cache pushing on startup. It is also recommended to pass the
218 <samp>--allow-loopback-pinentry</samp> to <code>gpg-agent</code> (this is the default
219 as of gnupg-2.1.15). This option allows a passphrase to be inquired from
220 <code>pwmd</code> when a <code>pinentry</code> is unavailable to the client
221 (see <a href="#TLS">TLS</a>).
222 </p>
223 <p>While <code>pwmd</code> has its own cache settings for an XML document,
224 <code>gpg-agent</code> has cache settings for the keys used for crypto operations
225 of a data file. Specifically the <samp>ignore-cache-for-signing</samp>,
226 <samp>default-cache-ttl</samp> and <samp>max-cache-ttl</samp> options. These gpg-agent
227 options may need to be adjusted depending on your usage needs. For example,
228 the <code>OPEN</code> command may not require a passphrase to open a data file do to
229 the gpg-agent having a cached key even though the <code>ISCACHED</code> command
230 returns an error indicating the data file is not cached; which usually means a
231 passphrase would be required.
232 </p>
233 <p>If you would like to use a keypair from your default gnupg keyring located in
234 ~/.gnupg, but would still like to use a separate gpg-agent process (the
235 default), you would need to first export the public key from the default
236 keyring then import it into the keyring that pwmd uses. You can do this by
237 first exporting the public key, then use the <samp>--homedir ~/.pwmd/.gnupg</samp>
238 option of <code>gpg</code> to import it into the new keyring. For private keys,
239 you would need to copy the private key associated with the exported public key
240 to <var>~/.pwmd/.gnupg/private-keys-v1.d</var>. If the private key is stored on
241 a smartcard you can also use the <code>KEYINFO --learn</code> command
242 (see <a href="#KEYINFO">KEYINFO</a>).
243 </p>
244 <a name="index-Running-pwmd"></a>
245 <p><code>pwmd</code> is executed as follows:
246 </p>
247 <div class="example">
248 <pre class="example">pwmd <var>options</var> [ file1 ] [ &hellip; ]
249 </pre></div>
251 <p>Non-option arguments are data files to cache upon startup. When the data file
252 requires a passphrase for decryption a <code>pinentry</code> will prompt either
253 on the current TTY or from an X11 window when the <code>DISPLAY</code>
254 environment variable is set. See <a href="#Pinentry">Pinentry</a>.
255 </p>
256 <a name="index-Options"></a>
257 <a name="index-Arguments"></a>
258 <p>The following command line options are supported:
259 </p>
260 <a name="index-Getting-help"></a>
261 <dl compact="compact">
262 <dt>&lsquo;<samp>--debug protocol:level[,protocol:level]</samp>&rsquo;</dt>
263 <dd><p>Enable debugging output. This option can output sensitive information such as
264 passphrases and secret keys so care should be taken where the output gets
265 written to. The <var>protocol</var> is a single character representing the protocol
266 to log. Use <code>a</code> for <code>libassuan</code> with <var>level</var> being one or more
267 character flags: <code>i</code> for init, <code>x</code> for context, <code>e</code> for engine,
268 <code>d</code> for data, <code>s</code> for system IO or <code>c</code> for control. To debug
269 <code>gpgme</code> use <code>g</code> as the <var>protocol</var> with <var>level</var> being an
270 integer from <code>1</code> to <code>9</code>. To enable <acronym>TLS</acronym> debugging output
271 use <code>t</code> as the <var>protocol</var> with <var>level</var> being an integer from
272 <code>1</code> to <code>9</code>. A value over <code>10</code> will enable all <acronym>TLS</acronym>
273 debugging output with <code>1</code> being the default.
274 </p>
275 </dd>
276 <dt>&lsquo;<samp>--homedir directory</samp>&rsquo;</dt>
277 <dd><p>The root directory where pwmd will store its data and temporary files. The
278 default is <samp>~/.pwmd</samp>.
279 </p>
280 </dd>
281 <dt>&lsquo;<samp>--rcfile, -f rcfile</samp>&rsquo;</dt>
282 <dd><p>Specify an alternate configuration file. The default is
283 <samp>~/.pwmd/config</samp>.
284 </p>
285 </dd>
286 <dt>&lsquo;<samp>--kill</samp>&rsquo;</dt>
287 <dd><p>Terminate an existing instance of pwmd. The process to terminate is determined
288 from the <samp>--homedir</samp> and <samp>--rcfile</samp> options.
289 </p>
290 </dd>
291 <dt>&lsquo;<samp>--import, -I filename|-</samp>&rsquo;</dt>
292 <dd><p>Imports the XML <var>filename</var>. When <var>filename</var> is <code>-</code> the
293 XML is read from stdin. The XML file should be in conformance to
294 the <code>pwmd</code> DTD (see <a href="#Introduction">Introduction</a>). You will be prompted for
295 a passphrase to encrypt with. The output is written to the filename specified
296 with <samp>--outfile</samp>. To make use of the imported data, place the output
297 file in <samp>~/.pwmd/data</samp>.
298 </p>
299 </dd>
300 <dt>&lsquo;<samp>--output, -o filename|-</samp>&rsquo;</dt>
301 <dd><p>When importing, write the encrypted data file to <var>filename</var>. When
302 <var>filename</var> is <code>-</code> output will be written to stdout.
303 </p>
304 </dd>
305 <dt>&lsquo;<samp>--passphrase-file, -k filename&quot;</samp>&rsquo;</dt>
306 <dd><p>Obtain the passphrase to use when importing from the specified <var>filename</var>.
307 </p>
308 </dd>
309 <dt>&lsquo;<samp>--keyparam filename</samp>&rsquo;</dt>
310 <dd><p>The key parameters to use when generating a new key pair while importing an
311 XML file. The file contents must be in GnuPG XML format.
312 </p>
313 </dd>
314 <dt>&lsquo;<samp>--keyid fingerprint[,&lt;fingerprint&gt;]</samp>&rsquo;</dt>
315 <dd><p>Specifies the fingerprint of the encryption key to use as a recipient when
316 importing. When not specified a new key-pair will be created.
317 </p>
318 </dd>
319 <dt>&lsquo;<samp>--sign-keyid fingerprint[,&lt;fingerprint&gt;]</samp>&rsquo;</dt>
320 <dd><p>Specifies the fingerprint of the signing key to use for signing of the data
321 file when importing. When not specified the signing key of the generated
322 key-pair or the signing key of the <samp>--keyid</samp> option will be used.
323 </p>
324 </dd>
325 <dt>&lsquo;<samp>--symmetric, -s</samp>&rsquo;</dt>
326 <dd><p>Use symmetric or conventional encryption rather than pubic key encryption when
327 importing. Signing is still possible by using the <samp>--sign-keyid</samp>
328 option. By default no signing is done when specifying this option.
329 </p>
330 </dd>
331 <dt>&lsquo;<samp>--disable-dump</samp>&rsquo;</dt>
332 <dd><p>Disable the <code>XPATH</code>, <code>XPATHATTR</code>, <code>LIST</code> and <code>DUMP</code>
333 protocol commands (see <a href="#Commands">Commands</a>). This overrides any
334 <var>disable_list_and_dump</var> configuration parameter (see <a href="#Configuration">Configuration</a>).
335 </p>
336 </dd>
337 <dt>&lsquo;<samp>--no-fork, -n</samp>&rsquo;</dt>
338 <dd><p>Run as a foreground process and do not fork into the background.
339 </p>
340 </dd>
341 <dt>&lsquo;<samp>--ignore, --force</samp>&rsquo;</dt>
342 <dd><p>Ignore cache pushing failures on startup. By default, <code>pwmd</code> will exit
343 if an error occurred do to an invalid passphrase or other error.
344 </p>
345 </dd>
346 <dt>&lsquo;<samp>--version</samp>&rsquo;</dt>
347 <dd><p>Show the version, copyright and compile time features and exit.
348 </p>
349 </dd>
350 <dt>&lsquo;<samp>--help</samp>&rsquo;</dt>
351 <dd><p>Print a summary of options.
352 </p></dd>
353 </dl>
356 <hr>
357 <a name="Configuration"></a>
358 <div class="header">
360 Next: <a href="#TLS" accesskey="n" rel="next">TLS</a>, Previous: <a href="#Invoking" accesskey="p" rel="prev">Invoking</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
361 </div>
362 <a name="pwmd-configuration-file-options"></a>
363 <h2 class="chapter">4 <code>pwmd</code> configuration file options</h2>
366 <p>If no configuration file is specified with the <code>pwmd</code> <samp>-f</samp>
367 command line option, <code>pwmd</code> will read <samp>~/.pwmd/config</samp> if it
368 exists, and if not, will use defaults. Blank lines and lines beginning with
369 &lsquo;<samp>#</samp>&rsquo; are ignored. Some parameters may have data file specific settings by
370 placing them in a file section. A file section is declared by surrounding the
371 filename with braces (i.e., &lsquo;<samp>[filename]</samp>&rsquo;). Global options may be
372 specified in the <code>global</code> section &lsquo;<samp>e.g., [global]</samp>&rsquo; and are the
373 default options for new or unspecified file sections.
374 </p>
375 <p>A tilde <code>~</code> will be expanded to the home directory of the user starting
376 <code>pwmd</code> when contained in a parameter whose value is a filename.
377 </p>
378 <a name="index-Reloading-the-configuration-file"></a>
379 <p>The configuration file can be reloaded by sending the <em>SIGHUP</em> signal to
380 a <code>pwmd</code> process. Some security sensitive settings may not be changed
381 until <code>pwmd</code> is restarted.
382 </p>
383 <a name="index-Global-configuration-options"></a>
384 <p>The following options are only for use in the <code>[global]</code> section:
385 </p>
386 <dl compact="compact">
387 <dt>&lsquo;<samp>socket_path = /path/to/socket</samp>&rsquo;</dt>
388 <dd><p>Listen on the specified socket. The default is <samp>~/.pwmd/socket</samp>.
389 </p>
390 </dd>
391 <dt>&lsquo;<samp>socket_perms = octal_mode</samp>&rsquo;</dt>
392 <dd><p>Permissions to set after creating the socket. This will override any
393 <cite>umask(2)</cite> setting.
394 </p>
395 </dd>
396 <dt>&lsquo;<samp>backlog = integer</samp>&rsquo;</dt>
397 <dd><p>The number of connections to queue. When this limit is reached then new
398 connections will be refused. The default is <code>128</code>.
399 </p>
400 </dd>
401 <dt>&lsquo;<samp>invoking_user = [-!]user,[-!]@group,[-!]#SHA-256,...</samp>&rsquo;</dt>
402 <dd><p>This parameter is not to be confused with setuid or setguid upon startup. It&rsquo;s
403 syntax is the same as the <code>allowed</code> parameter except that it is a list of
404 local usernames, group names and TLS fingerprint hashes that may use the
405 <code>XPATH</code>, <code>XPATHATTR</code> and <code>DUMP</code> commands (except when
406 disabled with the <code>disable_list_and_dump</code> option) and also who may modify
407 elements that have no <code>_acl</code> attribute or is not listed in an
408 <code>_acl</code>. It is similar to the system administrator root account but for a
409 data file and element paths (see <a href="#Access-Control">Access Control</a>). The default is the user
410 the executes <code>pwmd</code>.
411 </p>
412 </dd>
413 <dt>&lsquo;<samp>invoking_file = filename</samp>&rsquo;</dt>
414 <dd><p>A file containing one entry per line. An entry has the same syntax as the
415 <code>invoking_user</code> parameter. When both this parameter and the
416 <code>invoking_user</code> parameter are specified then the <code>invoking_user</code>
417 parameter will behave as if the <code>invoking_file</code> entries have been
418 appended to the <code>invoking_user</code> parameter value.
419 </p>
420 </dd>
421 <dt>&lsquo;<samp>strict_kill = boolean</samp>&rsquo;</dt>
422 <dd><p>When <code>false</code>, the <code>KILL</code> command (see <a href="#KILL">KILL</a>) will allow killing
423 another client that is not of the same <code>UID</code> or TLS fingerprint of
424 the current client and when not the <code>invoking_user</code>. The default us
425 <code>false</code>.
426 </p>
427 </dd>
428 <dt>&lsquo;<samp>allowed = [-!]user,[-!]@group,[+,][-!]#SHA-256,...</samp>&rsquo;</dt>
429 <dd><p>A comma separated list of local user names, group names or TLS
430 fingerprint SHA-256 hashes (in the case of a remote client) who are
431 allowed to connect. Groups should be prefixed with a &lsquo;<samp>@</samp>&rsquo;. When not
432 specified only the user who started <code>pwmd</code> may connect. A username,
433 group name or hash may also be prefixed with a <code>-</code> or <code>!</code> to prevent
434 access to a specific user or group in the list. The order of the list is
435 important since a user may be a member of multiple groups.
436 </p>
437 <p>This parameter may also be specified in a filename section to allow or deny a
438 client to <code>OPEN</code> (see <a href="#OPEN">OPEN</a>) a data file. It also affects the cache
439 commands <code>CLEARCACHE</code> (see <a href="#CLEARCACHE">CLEARCACHE</a>) and <code>CACHETIMEOUT</code>
440 (see <a href="#CACHETIMEOUT">CACHETIMEOUT</a>). When not specified in a file section, any user that
441 can connect may also open any filename (provided they can decrypt it).
442 </p>
443 <p>The following example would deny all users in group <code>primary</code> but
444 allow <code>username</code> who may be a member of <code>primary</code>. It will also
445 allow any TLS client except for the client with TLS fingerprint hash
446 <code>#ABCDEF</code>:
447 </p>
448 <div class="example">
449 <pre class="example">allowed=-@primary,username,+,!#ABCDEF
450 </pre></div>
452 </dd>
453 <dt>&lsquo;<samp>allowed_file = filename</samp>&rsquo;</dt>
454 <dd><p>A file containing one entry per line. An entry has the same syntax as the
455 <code>allowed</code> parameter. When both this parameter and the <code>allowed</code>
456 parameter are specified then the <code>allowed_file</code> entries will be appended
457 to the <code>allowed</code> parameter value.
458 </p>
459 </dd>
460 <dt>&lsquo;<samp>encrypt_to = boolean</samp>&rsquo;</dt>
461 <dd><p>When <code>true</code> and <code>SAVE</code>&rsquo;ing a data file, allow <code>gpg</code> to
462 append it&rsquo;s configured key to the list of recipients. The default is
463 <code>false</code> meaning that only keys specified with <code>SAVE</code>
464 <samp>--keyid</samp> are recipients.
465 </p>
466 </dd>
467 <dt>&lsquo;<samp>always_trust = boolean</samp>&rsquo;</dt>
468 <dd><p>When <code>true</code>, allow encrypting to untrusted recipients or public
469 encryption keys. The default is <code>false</code>.
470 </p>
471 </dd>
472 <dt>&lsquo;<samp>gpg_homedir = path</samp>&rsquo;</dt>
473 <dd><p>The location where <code>gpg</code> will store its public and private keys and
474 configuration. The default is <samp>HOMEDIR/.gnupg</samp> where <var>HOMEDIR</var> is the
475 default (<samp>~/.pwmd</samp>) or the value specified on the command line with the
476 <samp>--homedir</samp> command line option (see <a href="#Invoking">Invoking</a>). If you want to use
477 your standard <code>gpg</code> keyring then set this to <samp>~/.gnupg</samp>. Note
478 that a new instance of <code>gpg-agent</code> will be started when <em>not</em>
479 using the standard keyring and that any configuration options for
480 <code>gpg-agent</code> will need to placed in
481 <samp>HOMEDIR/.gnupg/gpg-agent.conf</samp>.
482 </p>
483 </dd>
484 <dt>&lsquo;<samp>disable_mlockall = boolean</samp>&rsquo;</dt>
485 <dd><p>When set to <code>false</code>, <cite>mlockall(2)</cite> will be called on startup. This
486 will use more physical memory but may also be more secure since no swapping to
487 disk will occur. The default is <var>true</var>. If possible, use an encrypted swap
488 file or partition and leave this set to <var>true</var>.
489 </p>
490 </dd>
491 <dt>&lsquo;<samp>log_path = /path/to/logfile</samp>&rsquo;</dt>
492 <dd><p>Logs informational messages to the specified file. The default is
493 <samp>~/.pwmd/log</samp>.
494 </p>
495 </dd>
496 <dt>&lsquo;<samp>enable_logging = boolean</samp>&rsquo;</dt>
497 <dd><p>Enable or disable logging to <var>log_path</var>. The default is <code>false</code>.
498 </p>
499 </dd>
500 <dt>&lsquo;<samp>log_keepopen = boolean</samp>&rsquo;</dt>
501 <dd><p>When set to <code>false</code>, the log file specified with <var>log_path</var> will be
502 closed after writing each line. The default is <code>true</code>.
503 </p>
504 </dd>
505 <dt>&lsquo;<samp>syslog = boolean</samp>&rsquo;</dt>
506 <dd><p>Enable logging to <cite>syslog(8)</cite> with facility <em>LOG_DAEMON</em> and priority
507 <em>LOG_INFO</em>. The default is <code>false</code>.
508 </p>
509 </dd>
510 <dt>&lsquo;<samp>log_level = level</samp>&rsquo;</dt>
511 <dd><p>When <code>0</code>, only connections and errors are logged. When <code>1</code>, data
512 file recipients and signers are logged during <code>OPEN</code> (see <a href="#OPEN">OPEN</a>) and
513 <code>SAVE</code> (see <a href="#SAVE">SAVE</a>). When <code>2</code>, client commands are also logged.
514 The default is <code>0</code>.
515 </p>
516 </dd>
517 <dt>&lsquo;<samp>kill_scd = boolean</samp>&rsquo;</dt>
518 <dd><p>Kill <code>scdaemon</code> after each <code>OPEN</code> (see <a href="#OPEN">OPEN</a>),
519 <code>SAVE</code> (see <a href="#SAVE">SAVE</a>) or <code>PASSWD</code> (see <a href="#PASSWD">PASSWD</a>) command. The
520 default is <code>false</code>.
521 </p>
522 </dd>
523 <dt>&lsquo;<samp>disable_list_and_dump = boolean</samp>&rsquo;</dt>
524 <dd><p>When <code>true</code>, the <code>XPATH</code>, <code>XPATHATTR</code>, <code>LIST</code> and
525 <code>DUMP</code> protocol commands (see <a href="#Commands">Commands</a>) will be disabled.
526 </p>
527 </dd>
528 <dt>&lsquo;<samp>cache_push = file1,file2</samp>&rsquo;</dt>
529 <dd><p>A comma separated list of filenames that will be pushed into the file cache
530 upon startup. <code>pwmd</code> will prompt for the passphrase for each file
531 unless specified with <var>passphrase_file</var> parameter in a matching file
532 section.
533 </p>
534 </dd>
535 <dt>&lsquo;<samp>priority = integer</samp>&rsquo;</dt>
536 <dd><p>The priority, or niceness, of the server. The default is inherited from the
537 parent process.
538 </p>
539 </dd>
540 <dt>&lsquo;<samp>lock_timeout = integer</samp>&rsquo;</dt>
541 <dd><p>The default timeout in tenths of a second before giving up waiting for a file
542 lock and returning an error. The default is <code>50</code>.
543 </p>
544 </dd>
545 </dl>
547 <a name="index-Data-file-configuration-options"></a>
548 <p>The following options are defaults for new files when specified in the
549 &lsquo;<samp>global</samp>&rsquo; section. When placed in a data file section they are options
550 specific to that data file only.
551 </p>
552 <dl compact="compact">
553 <dt>&lsquo;<samp>require_save_key = boolean</samp>&rsquo;</dt>
554 <dd><p>Require the passphrase needed for signing before writing changes of the
555 document to disk reguardless of the key cache status. The default is
556 <code>true</code>. This option compliments <code>gpg-agent</code> option
557 <samp>--ignore-cache-for-signing</samp> and is used as a fail-safe.
558 </p>
559 </dd>
560 <dt>&lsquo;<samp>backup = boolean</samp>&rsquo;</dt>
561 <dd><p>Whether to create a backup of the data file when saving. The backup filename
562 has the <samp>.backup</samp> extension appended to the opened file. The default is
563 <code>true</code>.
564 </p>
565 </dd>
566 <dt>&lsquo;<samp>cache_timeout = seconds</samp>&rsquo;</dt>
567 <dd><p>The number of seconds to keep the cache entry for this file. If <code>-1</code>, the
568 cache entry is kept forever. If <code>0</code>, each time an encrypted file is
569 <code>OPEN</code>ed (see <a href="#OPEN">OPEN</a>) a passphrase will be required. The default
570 is <code>600</code> or 10 minutes.
571 </p>
572 </dd>
573 <dt>&lsquo;<samp>xfer_progress = bytes</samp>&rsquo;</dt>
574 <dd><p>Commands that send data lines to the client will also send the <code>XFER</code>
575 status message (see <a href="#Status-Messages">Status Messages</a>) after the specified number of bytes
576 have been sent. The number of bytes is rounded to <var>ASSUAN_LINELENGTH</var> or
577 <code>1002</code> bytes. The default is <code>8196</code>.
578 </p>
579 </dd>
580 <dt>&lsquo;<samp>passphrase_file = /path/to/filename</samp>&rsquo;</dt>
581 <dd><p>Obtain the passphrase to open the data file from <var>filename</var>. If specified
582 in the &lsquo;<samp>global</samp>&rsquo; section then the <var>passphrase_file</var> is a default for
583 all data files. Note that if a client changes the passphrase for this data
584 file then the <var>passphrase_file</var> will need to be updated with the new
585 passphrase.
586 </p>
587 </dd>
588 <dt>&lsquo;<samp>recursion_depth = integer</samp>&rsquo;</dt>
589 <dd><p>The maximum number of times to resolve a <code>target</code> attribute for an
590 element in an element path (see <a href="#Target-Attribute">Target Attribute</a>). An error is returned
591 when this value is exceeded. The default is <code>100</code> but can be disabled by
592 setting to <code>0</code> (<em>not recommended</em>).
593 </p>
594 </dd>
595 <dt>&lsquo;<samp>allowed = [-]user,[-]@group,[!]#TLSFINGERPRINT,...</samp>&rsquo;</dt>
596 <dd><p>Same parameter value as the <code>allowed</code> parameter mentioned above in
597 the &lsquo;<samp>[global]</samp>&rsquo; section but grants or denies a client from opening a
598 specific data file. The default is to allow any client that is allowed to
599 connect.
600 </p>
601 </dd>
602 </dl>
603 <table class="menu" border="0" cellspacing="0">
604 <tr><td align="left" valign="top">&bull; <a href="#TLS" accesskey="1">TLS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Remote connections over TLS.
605 </td></tr>
606 <tr><td align="left" valign="top">&bull; <a href="#Pinentry" accesskey="2">Pinentry</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Configuration file and defaults.
607 </td></tr>
608 </table>
610 <hr>
611 <a name="TLS"></a>
612 <div class="header">
614 Next: <a href="#Pinentry" accesskey="n" rel="next">Pinentry</a>, Previous: <a href="#Configuration" accesskey="p" rel="prev">Configuration</a>, Up: <a href="#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
615 </div>
616 <a name="Configuring-remote-connections-over-TLS_002e"></a>
617 <h2 class="chapter">5 Configuring remote connections over TLS.</h2>
618 <p>Remote connections can also be made to <code>pwmd</code> over TLS.
619 Authentication is done by using X.509 client certificates that are signed with
620 the same Certificate Authority (CA) as the server certificate.
621 </p>
622 <p>The CA certificate is expected to be found in
623 <samp>~/.pwmd/ca-cert.pem</samp> while the <code>pwmd</code> server certificate and key
624 file should be put in <samp>~/.pwmd/server-cert.pem</samp> and
625 <samp>~/.pwmd/server-key.pem</samp>, respectively.
626 </p>
627 <p>See the documentation of <code>certtool</code> or <code>openssl</code> for details
628 about creating self-signed certificates.
629 </p>
630 <p>The following TLS configuration options are available:
631 </p>
632 <dl compact="compact">
633 <dt>&lsquo;<samp>enable_tcp = boolean</samp>&rsquo;</dt>
634 <dd><p>Whether to enable TCP/TLS server support. If enabled, both TCP and the local
635 unix domain socket will listen for connections. The default is
636 <code>false</code>.
637 </p>
638 </dd>
639 <dt>&lsquo;<samp>tcp_port = integer</samp>&rsquo;</dt>
640 <dd><p>The TCP port to listen on when <var>enable_tcp</var> is <code>true</code>. The default is
641 <code>6466</code>.
642 </p>
643 </dd>
644 <dt>&lsquo;<samp>tcp_bind = string</samp>&rsquo;</dt>
645 <dd><p>The internet protocol to listen with. Must be one of <code>ipv4</code>, <code>ipv6</code>
646 or <code>any</code> to listen for both IPv4 and IPv6 connections. The default is
647 <code>any</code>.
648 </p>
649 </dd>
650 <dt>&lsquo;<samp>tcp_interface = string</samp>&rsquo;</dt>
651 <dd><p>Only useful if running as root.
652 </p>
653 </dd>
654 <dt>&lsquo;<samp>tls_timeout = seconds</samp>&rsquo;</dt>
655 <dd><p>The number of seconds to wait for a read() or write() call on a
656 TLS client file descriptor to complete before returning an
657 error. The default is <var>300</var>.
658 </p>
659 </dd>
660 <dt>&lsquo;<samp>keepalive_interval = seconds</samp>&rsquo;</dt>
661 <dd><p>Send a keepalive status message to an idle remote client. An idle
662 client is one that is not in a command. The purpose of this status
663 message is to disconnect a hung remote client and release any file mutex
664 locks so another client may open the same data file. The default is <code>60</code>.
665 </p>
666 </dd>
667 <dt>&lsquo;<samp>tcp_require_key = boolean</samp>&rsquo;</dt>
668 <dd><p>When <code>true</code>, require the remote client to provide the passphrase to open
669 a data file even if the file is cached. This option is a default for all
670 files when specified in the &lsquo;<samp>[global]</samp>&rsquo; section. The default is
671 <code>false</code>.
672 </p>
673 </dd>
674 <dt>&lsquo;<samp>tls_cipher_suite = string</samp>&rsquo;</dt>
675 <dd><p>The GnuTLS cipher suite and protocol to use. See the GnuTLS documentation for
676 information about the format of this string. The default is
677 <code>SECURE256:SECURE192:SECURE128:-VERS-SSL3.0:-VERS-TLS1.0</code>.
678 </p>
679 </dd>
680 <dt>&lsquo;<samp>tls_dh_params_file = filename</samp>&rsquo;</dt>
681 <dd><p>The PEM encoded filename containing DH parameters. If not specified
682 then DH algorithms will not be available to the client. See the
683 <code>openssl dhparam</code> or <code>certtool</code> manual pages for details about
684 generating this file.
685 </p>
686 <p>Note that SIGHUP will not reload this file once TLS support has been enabled.
687 You will need to restart <code>pwmd</code> for changes to take effect.
688 </p></dd>
689 </dl>
691 <hr>
692 <a name="Pinentry"></a>
693 <div class="header">
695 Next: <a href="#Commands" accesskey="n" rel="next">Commands</a>, Previous: <a href="#TLS" accesskey="p" rel="prev">TLS</a>, Up: <a href="#Configuration" accesskey="u" rel="up">Configuration</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
696 </div>
697 <a name="Pinentry-configuration"></a>
698 <h2 class="chapter">6 Pinentry configuration</h2>
700 <p>The <code>pinentry</code> program is used to prompt the user for passphrase
701 input or as a confirmation dialog; it needs to know where to prompt for
702 the input, beit from a terminal or an X11 display.
703 </p>
704 <p>It is the responsibility of the client to tell <code>pinentry</code> about the
705 terminal or X11 display before requiring the input. This is done with the
706 <code>OPTION</code> command (see <a href="#OPTION">OPTION</a>) to either set or unset needed
707 <code>pwmd</code> environment variables and by using the
708 <code>gpg-connect-agent</code> program. Please read it&rsquo;s documentation about the
709 <em>UPDATESTARTUPTTY</em> command.
710 </p>
711 <hr>
712 <a name="Commands"></a>
713 <div class="header">
715 Next: <a href="#Status-Messages" accesskey="n" rel="next">Status Messages</a>, Previous: <a href="#Pinentry" accesskey="p" rel="prev">Pinentry</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
716 </div>
717 <a name="Protocol-commands-and-their-syntax"></a>
718 <h2 class="chapter">7 Protocol commands and their syntax</h2>
719 <table class="menu" border="0" cellspacing="0">
720 <tr><td align="left" valign="top">&bull; <a href="#ATTR" accesskey="1">ATTR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
721 </td></tr>
722 <tr><td align="left" valign="top">&bull; <a href="#CACHETIMEOUT" accesskey="2">CACHETIMEOUT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
723 </td></tr>
724 <tr><td align="left" valign="top">&bull; <a href="#CLEARCACHE" accesskey="3">CLEARCACHE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
725 </td></tr>
726 <tr><td align="left" valign="top">&bull; <a href="#COPY" accesskey="4">COPY</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
727 </td></tr>
728 <tr><td align="left" valign="top">&bull; <a href="#DELETE" accesskey="5">DELETE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
729 </td></tr>
730 <tr><td align="left" valign="top">&bull; <a href="#DUMP" accesskey="6">DUMP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
731 </td></tr>
732 <tr><td align="left" valign="top">&bull; <a href="#GET" accesskey="7">GET</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
733 </td></tr>
734 <tr><td align="left" valign="top">&bull; <a href="#GETCONFIG" accesskey="8">GETCONFIG</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
735 </td></tr>
736 <tr><td align="left" valign="top">&bull; <a href="#GETINFO" accesskey="9">GETINFO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
737 </td></tr>
738 <tr><td align="left" valign="top">&bull; <a href="#HELP">HELP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
739 </td></tr>
740 <tr><td align="left" valign="top">&bull; <a href="#IMPORT">IMPORT</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
741 </td></tr>
742 <tr><td align="left" valign="top">&bull; <a href="#ISCACHED">ISCACHED</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
743 </td></tr>
744 <tr><td align="left" valign="top">&bull; <a href="#KEYINFO">KEYINFO</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
745 </td></tr>
746 <tr><td align="left" valign="top">&bull; <a href="#KILL">KILL</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
747 </td></tr>
748 <tr><td align="left" valign="top">&bull; <a href="#LIST">LIST</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
749 </td></tr>
750 <tr><td align="left" valign="top">&bull; <a href="#LISTKEYS">LISTKEYS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
751 </td></tr>
752 <tr><td align="left" valign="top">&bull; <a href="#LOCK">LOCK</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
753 </td></tr>
754 <tr><td align="left" valign="top">&bull; <a href="#LS">LS</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
755 </td></tr>
756 <tr><td align="left" valign="top">&bull; <a href="#MOVE">MOVE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
757 </td></tr>
758 <tr><td align="left" valign="top">&bull; <a href="#NOP">NOP</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
759 </td></tr>
760 <tr><td align="left" valign="top">&bull; <a href="#OPEN">OPEN</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
761 </td></tr>
762 <tr><td align="left" valign="top">&bull; <a href="#OPTION">OPTION</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
763 </td></tr>
764 <tr><td align="left" valign="top">&bull; <a href="#PASSWD">PASSWD</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
765 </td></tr>
766 <tr><td align="left" valign="top">&bull; <a href="#REALPATH">REALPATH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
767 </td></tr>
768 <tr><td align="left" valign="top">&bull; <a href="#RENAME">RENAME</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
769 </td></tr>
770 <tr><td align="left" valign="top">&bull; <a href="#RESET">RESET</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
771 </td></tr>
772 <tr><td align="left" valign="top">&bull; <a href="#SAVE">SAVE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
773 </td></tr>
774 <tr><td align="left" valign="top">&bull; <a href="#STORE">STORE</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
775 </td></tr>
776 <tr><td align="left" valign="top">&bull; <a href="#UNLOCK">UNLOCK</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
777 </td></tr>
778 <tr><td align="left" valign="top">&bull; <a href="#XPATH">XPATH</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
779 </td></tr>
780 <tr><td align="left" valign="top">&bull; <a href="#XPATHATTR">XPATHATTR</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
781 </td></tr>
782 </table>
783 <hr>
784 <a name="ATTR"></a>
785 <div class="header">
787 Next: <a href="#CACHETIMEOUT" accesskey="n" rel="next">CACHETIMEOUT</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
788 </div>
789 <a name="ATTR-command"></a>
790 <h2 class="chapter">8 ATTR command</h2>
791 <a name="index-ATTR-command"></a>
792 <p>Syntax:
793 </p><div class="example">
794 <pre class="example">ATTR [--inquire] SET|GET|DELETE|LIST [&lt;attribute&gt;] element[&lt;TAB&gt;child[..]] ..
795 </pre></div>
797 <dl compact="compact">
798 <dt>ATTR SET attribute element[&lt;TAB&gt;child[..]] [value]</dt>
799 <dd><p>Stores or updates an <var>attribute</var> name and optional <var>value</var> of an
800 element. When no <var>value</var> is specified any existing value will be removed.
801 <br><br>
802 </p></dd>
803 <dt>ATTR DELETE attribute element[&lt;TAB&gt;child[..]]</dt>
804 <dd><p>Removes an attribute from an element. If <var>attribute</var> is <code>_name</code>
805 or <code>target</code> an error is returned. Use the <code>DELETE</code> command
806 (see <a href="#DELETE">DELETE</a>) instead.
807 <br><br>
808 </p></dd>
809 <dt>ATTR LIST element[&lt;TAB&gt;child[..]]</dt>
810 <dd><p>Retrieves a newline separated list of attributes names and values
811 from the specified element. Each attribute name and value is space delimited.
812 <br><br>
813 </p></dd>
814 <dt>ATTR GET attribute element[&lt;TAB&gt;child[..]]</dt>
815 <dd><p>Retrieves the value of an <var>attribute</var> from an element.
816 </p></dd>
817 </dl>
818 <br><br>
819 <p>When the <samp>--inquire</samp> option is passed then all remaining non-option
820 arguments are retrieved via a server <em>INQUIRE</em>.
821 <br><br>
822 See <a href="#Target-Attribute">Target Attribute</a>, for details about this special attribute and also
823 see <a href="#Other-Attributes">Other Attributes</a> for other attributes that are handled specially
824 by <code>pwmd</code>.
825 </p>
827 <hr>
828 <a name="CACHETIMEOUT"></a>
829 <div class="header">
831 Next: <a href="#CLEARCACHE" accesskey="n" rel="next">CLEARCACHE</a>, Previous: <a href="#ATTR" accesskey="p" rel="prev">ATTR</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
832 </div>
833 <a name="CACHETIMEOUT-command"></a>
834 <h2 class="chapter">9 CACHETIMEOUT command</h2>
835 <a name="index-CACHETIMEOUT-command"></a>
836 <p>Syntax:
837 </p><div class="example">
838 <pre class="example">CACHETIMEOUT &lt;filename&gt; &lt;seconds&gt;
839 </pre></div>
841 <p>The time in <var>seconds</var> until <var>filename</var> will be removed from the
842 cache. <code>-1</code> will keep the cache entry forever, <code>0</code> will require
843 the passphrase for each <code>OPEN</code> command (see <a href="#OPEN">OPEN</a>) or <code>SAVE</code>
844 (see <a href="#SAVE">SAVE</a>) command. See <a href="#Configuration">Configuration</a>, and the <code>cache_timeout</code>
845 parameter.
846 </p>
848 <hr>
849 <a name="CLEARCACHE"></a>
850 <div class="header">
852 Next: <a href="#COPY" accesskey="n" rel="next">COPY</a>, Previous: <a href="#CACHETIMEOUT" accesskey="p" rel="prev">CACHETIMEOUT</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
853 </div>
854 <a name="CLEARCACHE-command"></a>
855 <h2 class="chapter">10 CLEARCACHE command</h2>
856 <a name="index-CLEARCACHE-command"></a>
857 <p>Syntax:
858 </p><div class="example">
859 <pre class="example">CLEARCACHE [&lt;filename&gt;]
860 </pre></div>
862 <p>Clears a file cache entry for all or the specified <var>filename</var>. Note that
863 this will also clear any <code>gpg-agent</code> cached keys which may cause
864 problems if another data file shares the same keys as <var>filename</var>.
865 <br><br>
866 When clearing all cache entries a permissions test is done against the
867 current client based on the <var>allowed</var> configuration parameter in a
868 <var>filename</var> section. Both a cache entry may be cleared and an error
869 returned depending on cached data files and client permissions.
870 </p>
872 <hr>
873 <a name="COPY"></a>
874 <div class="header">
876 Next: <a href="#DELETE" accesskey="n" rel="next">DELETE</a>, Previous: <a href="#CLEARCACHE" accesskey="p" rel="prev">CLEARCACHE</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
877 </div>
878 <a name="COPY-command"></a>
879 <h2 class="chapter">11 COPY command</h2>
880 <a name="index-COPY-command"></a>
881 <p>Syntax:
882 </p><div class="example">
883 <pre class="example">COPY [--inquire] source[&lt;TAB&gt;child[..]] dest[&lt;TAB&gt;child[..]]
884 </pre></div>
886 <p>Copies the entire element tree starting from the child node of the source
887 element, to the destination element path. If the destination element path
888 does not exist then it will be created; otherwise it is overwritten.
889 <br><br>
890 Note that attributes from the source element are merged into the
891 destination element when the destination element path exists. When an
892 attribute of the same name exists in both the source and destination
893 elements then the destination attribute will be updated to the source
894 attribute value.
895 <br><br>
896 When the <samp>--inquire</samp> option is passed then all remaining non-option
897 arguments are retrieved via a server <em>INQUIRE</em>.
898 </p>
900 <hr>
901 <a name="DELETE"></a>
902 <div class="header">
904 Next: <a href="#DUMP" accesskey="n" rel="next">DUMP</a>, Previous: <a href="#COPY" accesskey="p" rel="prev">COPY</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
905 </div>
906 <a name="DELETE-command"></a>
907 <h2 class="chapter">12 DELETE command</h2>
908 <a name="index-DELETE-command"></a>
909 <p>Syntax:
910 </p><div class="example">
911 <pre class="example">DELETE [--inquire] element[&lt;TAB&gt;child[..]]
912 </pre></div>
914 <p>Removes the specified element path and all of its children. This may break
915 an element with a <code>target</code> attribute (see <a href="#Target-Attribute">Target Attribute</a>) that
916 refers to this element or any of its children.
917 <br><br>
918 When the <samp>--inquire</samp> option is passed then all remaining non-option
919 arguments are retrieved via a server <em>INQUIRE</em>.
920 </p>
922 <hr>
923 <a name="DUMP"></a>
924 <div class="header">
926 Next: <a href="#GET" accesskey="n" rel="next">GET</a>, Previous: <a href="#DELETE" accesskey="p" rel="prev">DELETE</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
927 </div>
928 <a name="DUMP-command"></a>
929 <h2 class="chapter">13 DUMP command</h2>
930 <a name="index-DUMP-command"></a>
931 <p>Syntax:
932 </p><div class="example">
933 <pre class="example">DUMP
934 </pre></div>
936 <p>Shows the in memory <abbr>XML</abbr> document with indenting. See <a href="#XPATH">XPATH</a>, for
937 dumping a specific node.
938 </p>
940 <hr>
941 <a name="GET"></a>
942 <div class="header">
944 Next: <a href="#GETCONFIG" accesskey="n" rel="next">GETCONFIG</a>, Previous: <a href="#DUMP" accesskey="p" rel="prev">DUMP</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
945 </div>
946 <a name="GET-command"></a>
947 <h2 class="chapter">14 GET command</h2>
948 <a name="index-GET-command"></a>
949 <p>Syntax:
950 </p><div class="example">
951 <pre class="example">GET [--inquire] element[&lt;TAB&gt;child[..]]
952 </pre></div>
954 <p>Retrieves the content of the specified element. The content is returned
955 with a data response.
956 <br><br>
957 When the <samp>--inquire</samp> option is passed then all remaining non-option
958 arguments are retrieved via a server <em>INQUIRE</em>.
959 </p>
961 <hr>
962 <a name="GETCONFIG"></a>
963 <div class="header">
965 Next: <a href="#GETINFO" accesskey="n" rel="next">GETINFO</a>, Previous: <a href="#GET" accesskey="p" rel="prev">GET</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
966 </div>
967 <a name="GETCONFIG-command"></a>
968 <h2 class="chapter">15 GETCONFIG command</h2>
969 <a name="index-GETCONFIG-command"></a>
970 <p>Syntax:
971 </p><div class="example">
972 <pre class="example">GETCONFIG [filename] &lt;parameter&gt;
973 </pre></div>
975 <p>Returns the value of a <code>pwmd</code> configuration <var>parameter</var> with a
976 data response. If no file has been opened then the value for <var>filename</var>
977 or the default from the <var>global</var> section will be returned. If a file
978 has been opened and no <var>filename</var> is specified, the value previously
979 set with the <code>OPTION</code> command (see <a href="#OPTION">OPTION</a>) will be returned.
980 </p>
982 <hr>
983 <a name="GETINFO"></a>
984 <div class="header">
986 Next: <a href="#HELP" accesskey="n" rel="next">HELP</a>, Previous: <a href="#GETCONFIG" accesskey="p" rel="prev">GETCONFIG</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
987 </div>
988 <a name="GETINFO-command"></a>
989 <h2 class="chapter">16 GETINFO command</h2>
990 <a name="index-GETINFO-command"></a>
991 <p>Syntax:
992 </p><div class="example">
993 <pre class="example">GETINFO [--data] [--verbose] CACHE | CLIENTS | PID | USER | LAST_ERROR | VERSION
994 </pre></div>
996 <p>Get server and other information. The information is returned via a status
997 message (see <a href="#Status-Messages">Status Messages</a>) unless otherwise noted or <samp>--data</samp>
998 is specified.
999 <br><br>
1000 <var>CACHE</var> returns the number of cached documents.
1001 <br><br>
1002 <var>CLIENTS</var> returns the number of
1003 connected clients via a status message or a list of connected clients when
1004 the <samp>--verbose</samp> parameter is used (implies <samp>--data</samp>). A
1005 verbose line of a client list contains
1006 space delimited
1007 fields: the thread ID, client name, opened file (<code>/</code> if none opened),
1008 IP address if remote, file lock status, whether the current client is self
1009 or not, client state (see below),
1010 user ID or TLS fingerprint of the connected client, username if the
1011 client is a local one else <code>-</code>, and finally the time stamp of when the
1012 client connected.
1013 <br><br>
1014 Client state <code>0</code> is an unknown client state, state <code>1</code> indicates
1015 the client has connected but hasn&rsquo;t completed initializing, state <code>2</code>
1016 indicates that the client is idle, state <code>3</code> means the
1017 client is in a command and state <code>4</code> means the client is disconnecting.
1018 <br><br>
1019 <var>PID</var> returns the process ID number of the server via a data response.
1020 <br><br>
1021 <var>VERSION</var> returns the server version number and compile-time features
1022 via a data response with each being space delimited.
1023 <br><br>
1024 <var>LAST_ERROR</var> returns a detailed description of the last failed command
1025 via a data response, when available.
1026 <br><br>
1027 <var>USER</var> returns the username or <abbr>TLS</abbr> hash of the connected client
1028 via a data response.
1029 </p>
1031 <hr>
1032 <a name="HELP"></a>
1033 <div class="header">
1035 Next: <a href="#IMPORT" accesskey="n" rel="next">IMPORT</a>, Previous: <a href="#GETINFO" accesskey="p" rel="prev">GETINFO</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1036 </div>
1037 <a name="HELP-command"></a>
1038 <h2 class="chapter">17 HELP command</h2>
1039 <a name="index-HELP-command"></a>
1040 <p>Syntax:
1041 </p><div class="example">
1042 <pre class="example">HELP [--html] [&lt;COMMAND&gt;]
1043 </pre></div>
1045 <p>Show available commands or command specific help text.
1046 <br><br>
1047 The <samp>--html</samp> option will output the help text in HTML format.
1048 </p>
1050 <hr>
1051 <a name="IMPORT"></a>
1052 <div class="header">
1054 Next: <a href="#ISCACHED" accesskey="n" rel="next">ISCACHED</a>, Previous: <a href="#HELP" accesskey="p" rel="prev">HELP</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1055 </div>
1056 <a name="IMPORT-command"></a>
1057 <h2 class="chapter">18 IMPORT command</h2>
1058 <a name="index-IMPORT-command"></a>
1059 <p>Syntax:
1060 </p><div class="example">
1061 <pre class="example">IMPORT [--root=element[&lt;TAB&gt;child[..]]]
1062 </pre></div>
1064 <p>This command uses a server <em>INQUIRE</em> to retrieve data from the client.
1065 <br><br>
1066 Like the <code>STORE</code> command (see <a href="#STORE">STORE</a>), but the <var>content</var>
1067 argument is raw <abbr>XML</abbr> data. The content is created as a child of
1068 the element path specified with the <samp>--root</samp> option or at the
1069 document root when not specified. Existing elements of the same name will
1070 be overwritten.
1071 <br><br>
1072 The content must begin with an <abbr>XML</abbr> element node. See <a href="#Introduction">Introduction</a>,
1073 for details.
1074 </p>
1076 <hr>
1077 <a name="ISCACHED"></a>
1078 <div class="header">
1080 Next: <a href="#KEYINFO" accesskey="n" rel="next">KEYINFO</a>, Previous: <a href="#IMPORT" accesskey="p" rel="prev">IMPORT</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1081 </div>
1082 <a name="ISCACHED-command"></a>
1083 <h2 class="chapter">19 ISCACHED command</h2>
1084 <a name="index-ISCACHED-command"></a>
1085 <p>Syntax:
1086 </p><div class="example">
1087 <pre class="example">ISCACHED [--lock] [--agent [--sign]] &lt;filename&gt;
1088 </pre></div>
1090 <p>Determines the file cache status of the specified <var>filename</var>.
1091 The default is to test whether the filename is cached in memory. Passing
1092 option <samp>--agent</samp> will test the <code>gpg-agent</code> cache for at most
1093 one cached key used for opening the data file (see <a href="#OPEN">OPEN</a>). To test if
1094 a signing key is cached, pass <samp>--sign</samp> along with <samp>--agent</samp>.
1095 Both the <samp>--agent</samp> and <samp>--sign</samp> options require an opened data
1096 file.
1097 <br><br>
1098 An <em>OK</em> response is returned if the specified <var>filename</var> is found
1099 in the cache. If not found in the cache but exists on the filesystem
1100 then <code>GPG_ERR_NO_DATA</code> is returned. Otherwise a filesystem error is
1101 returned.
1102 <br><br>
1103 The <samp>--lock</samp> option will lock the file mutex of <var>filename</var> when
1104 the file exists; it does not need to be opened nor cached. The lock will be
1105 released when the client exits or sends the <code>UNLOCK</code> command
1106 (see <a href="#UNLOCK">UNLOCK</a>). When this option is passed the current data file is closed.
1107 </p>
1109 <hr>
1110 <a name="KEYINFO"></a>
1111 <div class="header">
1113 Next: <a href="#KILL" accesskey="n" rel="next">KILL</a>, Previous: <a href="#ISCACHED" accesskey="p" rel="prev">ISCACHED</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1114 </div>
1115 <a name="KEYINFO-command"></a>
1116 <h2 class="chapter">20 KEYINFO command</h2>
1117 <a name="index-KEYINFO-command"></a>
1118 <p>Syntax:
1119 </p><div class="example">
1120 <pre class="example">KEYINFO [--learn]
1121 </pre></div>
1123 <p>Returns a new line separated list of key ID&rsquo;s that the currently opened
1124 data file has recipients and signers for. If the key is a signing key it
1125 will be prefixed with an <code>S</code>. If the file is a new one, or has no
1126 signers in the case of being symmetrically encrypted, the error code
1127 <code>GPG_ERR_NO_DATA</code> is returned.
1128 <br><br>
1129 When the <samp>--learn</samp> option is passed, keys on a smartcard will be
1130 imported.
1131 </p>
1133 <hr>
1134 <a name="KILL"></a>
1135 <div class="header">
1137 Next: <a href="#LIST" accesskey="n" rel="next">LIST</a>, Previous: <a href="#KEYINFO" accesskey="p" rel="prev">KEYINFO</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1138 </div>
1139 <a name="KILL-command"></a>
1140 <h2 class="chapter">21 KILL command</h2>
1141 <a name="index-KILL-command"></a>
1142 <p>Syntax:
1143 </p><div class="example">
1144 <pre class="example">KILL &lt;thread_id&gt;
1145 </pre></div>
1147 <p>Terminates the client identified by <var>thread_id</var> and releases any file
1148 lock or other resources it has held. See <code>GETINFO</code> (see <a href="#GETINFO">GETINFO</a>)
1149 for details about listing connected clients. An <code>invoking_user</code>
1150 (see <a href="#Configuration">Configuration</a>) may kill any client while others may only kill
1151 clients of the same <code>UID</code> or <abbr>TLS</abbr> fingerprint.
1152 </p>
1154 <hr>
1155 <a name="LIST"></a>
1156 <div class="header">
1158 Next: <a href="#LISTKEYS" accesskey="n" rel="next">LISTKEYS</a>, Previous: <a href="#KILL" accesskey="p" rel="prev">KILL</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1159 </div>
1160 <a name="LIST-command"></a>
1161 <h2 class="chapter">22 LIST command</h2>
1162 <a name="index-LIST-command"></a>
1163 <p>Syntax:
1164 </p><div class="example">
1165 <pre class="example">LIST [--inquire] [--recurse] [element[&lt;TAB&gt;child[..]]]
1166 </pre></div>
1168 <p>If no element path is given then a newline separated list of root elements
1169 is returned with a data response. If given, then children of the specified
1170 element path are returned.
1171 <br><br>
1172 Each element path
1173 returned will have zero or more flags appened to it. These flags are
1174 delimited from the element path by a single space character. A flag itself
1175 is a single character. Flag <code>P</code> indicates that access to the element
1176 is denied. Flag <code>+</code> indicates that there are child nodes of
1177 the current element path. Flag <code>E</code> indicates that an element of the
1178 element path contained in a <var>target</var> attribute could not be found. Flag
1179 <code>O</code> indicates that a <var>target</var> attribute recursion limit was reached
1180 (see <a href="#Configuration">Configuration</a>). Flag <code>T</code>, followed by a single space character,
1181 then an element path, is the element path of the <var>target</var> attribute
1182 contained in the current element.
1183 <br><br>
1184 When a specified element path contains an error, beit from the final
1185 element in the path or any previous element, the path is still shown but
1186 will contain the error flag for the element with the error. Determining
1187 the actual element which contains the error is up to the client. This can be
1188 done by traversing the final element up to parent elements that contain the
1189 same error flag.
1190 <br><br>
1191 The option <samp>--recurse</samp> may be used to list the entire element tree
1192 for a specified element path or the entire tree for all root elements.
1193 <br><br>
1194 When the <samp>--inquire</samp> option is passed then all remaining non-option
1195 arguments are retrieved via a server <em>INQUIRE</em>.
1196 </p>
1198 <hr>
1199 <a name="LISTKEYS"></a>
1200 <div class="header">
1202 Next: <a href="#LOCK" accesskey="n" rel="next">LOCK</a>, Previous: <a href="#LIST" accesskey="p" rel="prev">LIST</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1203 </div>
1204 <a name="LISTKEYS-command"></a>
1205 <h2 class="chapter">23 LISTKEYS command</h2>
1206 <a name="index-LISTKEYS-command"></a>
1207 <p>Syntax:
1208 </p><div class="example">
1209 <pre class="example">LISTKEYS [--secret-only] [pattern[,&lt;pattern&gt;]]
1210 </pre></div>
1212 <p>Returns a new line separated list of key information matching a comma
1213 separated list of <var>pattern</var>&rsquo;s. When option <samp>--secret-only</samp> is
1214 specified, only keys matching <var>pattern</var> that also have a secret key
1215 available will be returned.
1216 </p>
1218 <hr>
1219 <a name="LOCK"></a>
1220 <div class="header">
1222 Next: <a href="#LS" accesskey="n" rel="next">LS</a>, Previous: <a href="#LISTKEYS" accesskey="p" rel="prev">LISTKEYS</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1223 </div>
1224 <a name="LOCK-command"></a>
1225 <h2 class="chapter">24 LOCK command</h2>
1226 <a name="index-LOCK-command"></a>
1227 <p>Syntax:
1228 </p><div class="example">
1229 <pre class="example">LOCK
1230 </pre></div>
1232 <p>Locks the mutex associated with the opened file. This prevents other clients
1233 from sending commands to the same opened file until the client
1234 that sent this command either disconnects or sends the <code>UNLOCK</code>
1235 command. See <a href="#UNLOCK">UNLOCK</a>.
1236 </p>
1238 <hr>
1239 <a name="LS"></a>
1240 <div class="header">
1242 Next: <a href="#MOVE" accesskey="n" rel="next">MOVE</a>, Previous: <a href="#LOCK" accesskey="p" rel="prev">LOCK</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1243 </div>
1244 <a name="LS-command"></a>
1245 <h2 class="chapter">25 LS command</h2>
1246 <a name="index-LS-command"></a>
1247 <p>Syntax:
1248 </p><div class="example">
1249 <pre class="example">LS
1250 </pre></div>
1252 <p>Returns a newline separated list of data files stored in the data directory
1253 <samp>HOMEDIR/data</samp> (see <a href="#Invoking">Invoking</a>) with a data response.
1254 </p>
1256 <hr>
1257 <a name="MOVE"></a>
1258 <div class="header">
1260 Next: <a href="#NOP" accesskey="n" rel="next">NOP</a>, Previous: <a href="#LS" accesskey="p" rel="prev">LS</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1261 </div>
1262 <a name="MOVE-command"></a>
1263 <h2 class="chapter">26 MOVE command</h2>
1264 <a name="index-MOVE-command"></a>
1265 <p>Syntax:
1266 </p><div class="example">
1267 <pre class="example">MOVE [--inquire] source[&lt;TAB&gt;child[..]] [dest[&lt;TAB&gt;child[..]]]
1268 </pre></div>
1270 <p>Moves the source element path to the destination element path. If the
1271 destination is not specified then it will be moved to the root node of the
1272 document. If the destination is specified and exists then it will be
1273 overwritten; otherwise non-existing elements of the destination element
1274 path will be created.
1275 <br><br>
1276 When the <samp>--inquire</samp> option is passed then all remaining non-option
1277 arguments are retrieved via a server <em>INQUIRE</em>.
1278 </p>
1280 <hr>
1281 <a name="NOP"></a>
1282 <div class="header">
1284 Next: <a href="#OPEN" accesskey="n" rel="next">OPEN</a>, Previous: <a href="#MOVE" accesskey="p" rel="prev">MOVE</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1285 </div>
1286 <a name="NOP-command"></a>
1287 <h2 class="chapter">27 NOP command</h2>
1288 <a name="index-NOP-command"></a>
1289 <p>Syntax:
1290 </p><div class="example">
1291 <pre class="example">NOP
1292 </pre></div>
1294 <p>Does nothing. Always returns successfully.
1295 </p>
1297 <hr>
1298 <a name="OPEN"></a>
1299 <div class="header">
1301 Next: <a href="#OPTION" accesskey="n" rel="next">OPTION</a>, Previous: <a href="#NOP" accesskey="p" rel="prev">NOP</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1302 </div>
1303 <a name="OPEN-command"></a>
1304 <h2 class="chapter">28 OPEN command</h2>
1305 <a name="index-OPEN-command"></a>
1306 <p>Syntax:
1307 </p><div class="example">
1308 <pre class="example">OPEN [--lock] &lt;filename&gt;
1309 </pre></div>
1311 <p>Opens <var>filename</var>. When the <var>filename</var> is not found on the
1312 file-system then a new in-memory document will be created. If the file is
1313 found, it is looked for in the file cache and when found no passphrase will
1314 be required to open it. When not cached, <cite>pinentry(1)</cite> will be used to
1315 retrieve the passphrase for decryption unless <samp>disable-pinentry</samp>
1316 (see <a href="#OPTION">OPTION</a>) was specified in which case <code>pwmd</code> will
1317 <em>INQUIRE</em> the client for the passphrase.
1318 <br><br>
1319 When the <samp>--lock</samp> option is passed then the file mutex will be
1320 locked as if the <code>LOCK</code> command (see <a href="#LOCK">LOCK</a>) had been sent after the
1321 file had been opened.
1322 </p>
1324 <hr>
1325 <a name="OPTION"></a>
1326 <div class="header">
1328 Next: <a href="#PASSWD" accesskey="n" rel="next">PASSWD</a>, Previous: <a href="#OPEN" accesskey="p" rel="prev">OPEN</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1329 </div>
1330 <a name="OPTION-command"></a>
1331 <h2 class="chapter">29 OPTION command</h2>
1332 <a name="index-OPTION-command"></a>
1333 <p>Syntax:
1334 </p><div class="example">
1335 <pre class="example">OPTION &lt;NAME&gt;=[&lt;VALUE&gt;]
1336 </pre></div>
1338 <p>Sets a client option <var>name</var> to <var>value</var>. The value for an option is
1339 kept for the duration of the connection with the exception of the
1340 <code>pinentry</code> options which are defaults for all future connections
1341 (see <a href="#Pinentry">Pinentry</a>). When <var>value</var> is empty the option is unset.
1342 <br><br>
1343 </p><dl compact="compact">
1344 <dt>DISABLE-PINENTRY</dt>
1345 <dd><p>Disable use of <code>pinentry</code> for passphrase retrieval. When <code>1</code>, a
1346 server inquire is sent to the client to obtain the passphrase. This option
1347 may be set as needed before the <code>OPEN</code> (see <a href="#OPEN">OPEN</a>), <code>PASSWD</code>
1348 (see <a href="#PASSWD">PASSWD</a>) and <code>SAVE</code> (see <a href="#SAVE">SAVE</a>) commands. Set to <code>0</code>
1349 to use a <code>pinentry</code>.
1350 <br><br>
1351 </p></dd>
1352 <dt>DISPLAY</dt>
1353 <dd><p>Set or unset the X11 display to use when prompting for a passphrase.
1354 <br><br>
1355 </p></dd>
1356 <dt>TTYNAME</dt>
1357 <dd><p>Set the terminal device path to use when prompting for a passphrase.
1358 <br><br>
1359 </p></dd>
1360 <dt>TTYTYPE</dt>
1361 <dd><p>Set the terminal type for use with <samp>TTYNAME</samp>.
1362 <br><br>
1363 </p></dd>
1364 <dt>NAME</dt>
1365 <dd><p>Associates the thread ID of the connection with the specified textual
1366 representation. Useful for debugging log messages. May not contain whitespace.
1367 <br><br>
1368 </p></dd>
1369 <dt>LOCK-TIMEOUT</dt>
1370 <dd><p>When not <code>0</code>, the duration in tenths of a second to wait for the file
1371 mutex which has been locked by another thread to be released before returning
1372 an error. When <code>-1</code> the error will be returned immediately.
1373 <br><br>
1374 </p></dd>
1375 <dt>CLIENT-STATE</dt>
1376 <dd><p>When set to <code>1</code> then client state status messages for other clients are
1377 sent to the current client. The default is <code>0</code>.
1378 </p></dd>
1379 </dl>
1382 <hr>
1383 <a name="PASSWD"></a>
1384 <div class="header">
1386 Next: <a href="#REALPATH" accesskey="n" rel="next">REALPATH</a>, Previous: <a href="#OPTION" accesskey="p" rel="prev">OPTION</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1387 </div>
1388 <a name="PASSWD-command"></a>
1389 <h2 class="chapter">30 PASSWD command</h2>
1390 <a name="index-PASSWD-command"></a>
1391 <p>Syntax:
1392 </p><div class="example">
1393 <pre class="example">PASSWD
1394 </pre></div>
1396 <p>Changes the passphrase of the secret key required to open the current
1397 data file. If the data file is symmetrically encrypted, the error
1398 <code>GPG_ERR_NOT_SUPPORTED</code> is returned. When symmetrically encrypted,
1399 the <code>SAVE</code> command (see <a href="#SAVE">SAVE</a>) should be used instead to prevent
1400 this command saving any unwanted changes to the <abbr>XML</abbr> document.
1401 <br><br>
1402 This command is not available to non-invoking clients
1403 (see <a href="#Access-Control">Access Control</a>).
1404 </p>
1406 <hr>
1407 <a name="REALPATH"></a>
1408 <div class="header">
1410 Next: <a href="#RENAME" accesskey="n" rel="next">RENAME</a>, Previous: <a href="#PASSWD" accesskey="p" rel="prev">PASSWD</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1411 </div>
1412 <a name="REALPATH-command"></a>
1413 <h2 class="chapter">31 REALPATH command</h2>
1414 <a name="index-REALPATH-command"></a>
1415 <p>Syntax:
1416 </p><div class="example">
1417 <pre class="example">REALPATH [--inquire] element[&lt;TAB&gt;child[..]]
1418 </pre></div>
1420 <p>Resolves all <code>target</code> attributes of the specified element path and
1421 returns the result with a data response. See <a href="#Target-Attribute">Target Attribute</a>, for details.
1422 <br><br>
1423 When the <samp>--inquire</samp> option is passed then all remaining non-option
1424 arguments are retrieved via a server <em>INQUIRE</em>.
1425 </p>
1427 <hr>
1428 <a name="RENAME"></a>
1429 <div class="header">
1431 Next: <a href="#RESET" accesskey="n" rel="next">RESET</a>, Previous: <a href="#REALPATH" accesskey="p" rel="prev">REALPATH</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1432 </div>
1433 <a name="RENAME-command"></a>
1434 <h2 class="chapter">32 RENAME command</h2>
1435 <a name="index-RENAME-command"></a>
1436 <p>Syntax:
1437 </p><div class="example">
1438 <pre class="example">RENAME [--inquire] element[&lt;TAB&gt;child[..]] &lt;value&gt;
1439 </pre></div>
1441 <p>Renames the specified <var>element</var> to the new <var>value</var>. If an element of
1442 the same name as the <var>value</var> already exists it will be overwritten.
1443 <br><br>
1444 When the <samp>--inquire</samp> option is passed then all remaining non-option
1445 arguments are retrieved via a server <em>INQUIRE</em>.
1446 </p>
1448 <hr>
1449 <a name="RESET"></a>
1450 <div class="header">
1452 Next: <a href="#SAVE" accesskey="n" rel="next">SAVE</a>, Previous: <a href="#RENAME" accesskey="p" rel="prev">RENAME</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1453 </div>
1454 <a name="RESET-command"></a>
1455 <h2 class="chapter">33 RESET command</h2>
1456 <a name="index-RESET-command"></a>
1457 <p>Syntax:
1458 </p><div class="example">
1459 <pre class="example">RESET
1460 </pre></div>
1462 <p>Closes the currently opened file but keeps any previously set client options
1463 (see <a href="#OPTION">OPTION</a>).
1464 </p>
1466 <hr>
1467 <a name="SAVE"></a>
1468 <div class="header">
1470 Next: <a href="#STORE" accesskey="n" rel="next">STORE</a>, Previous: <a href="#RESET" accesskey="p" rel="prev">RESET</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1471 </div>
1472 <a name="SAVE-command"></a>
1473 <h2 class="chapter">34 SAVE command</h2>
1474 <a name="index-SAVE-command"></a>
1475 <p>Syntax:
1476 </p><div class="example">
1477 <pre class="example">SAVE [--symmetric] [--inquire-keyparam] [--keyid=&lt;fpr&gt;[,..] | [--inquire-keyid]] [--sign-keyid=&lt;fpr&gt;[,..] | [--inquire-sign-keyid]]
1478 </pre></div>
1480 <p>Writes the in-memory <abbr>XML</abbr> document to disk. The file written to is the
1481 file that was opened using the <code>OPEN</code> command (see <a href="#OPEN">OPEN</a>). If the
1482 file is a new one or the option <samp>--inquire-keyparam</samp> was passed, a
1483 new keypair will be generated and <cite>pinentry(1)</cite> will be used to prompt
1484 for the passphrase of the secret key used for signing.
1485 <br><br>
1486 The <samp>--inquire-keyparam</samp> option will send an
1487 <em>INQUIRE</em> to the client to obtain the key parameters to use for
1488 generating the new keypair. The inquired data is expected to be in
1489 <cite>gnupg</cite> <abbr>XML</abbr> format. See the <cite>gnupg</cite> documentation for
1490 details. Note that when this option is specified a new keypair will be
1491 generated reguardless if the file is a new one and that the passphrase for
1492 the current file will be required before generating the new keypair. This
1493 option is available to non-invoking clients (see <a href="#Access-Control">Access Control</a>) only
1494 when the file is a new one.
1495 <br><br>
1496 You can encrypt the data file to a recipient other than the one that it
1497 was encrypted with by passing the <samp>--keyid</samp> or
1498 <samp>--inquire-keyid</samp> option with
1499 the fingerprint of a public encryption key as its argument. Use the
1500 <code>LISTKEYS</code> command (see <a href="#LISTKEYS">LISTKEYS</a>) to show key information by
1501 pattern. The <samp>--sign-keyid</samp> or <samp>--inquire-sign-keyid</samp> option
1502 may also be used to sign the data
1503 file with an alternate key by specifying the fingerprint of a secret key.
1504 A passphrase to decrypt the data file
1505 will be required when one or more of the original encryption or signing keys
1506 are not found in either of these two options&rsquo; arguments or when the data
1507 file is symmetrically encrypted, reguardless of the <code>require_save_key</code>
1508 configuration parameter. The original encryption or signing keys will be
1509 used when either of these options are not specified.
1510 <br><br>
1511 The <samp>--keyid</samp> and <samp>--sign-keyid</samp> options are not available
1512 for non-invoking clients
1513 (see <a href="#Access-Control">Access Control</a>) when the recipients or signers do not match those
1514 that were used when the file was <code>OPEN</code>&rsquo;ed.
1515 <br><br>
1516 The <samp>--symmetric</samp> option specifies that a new data file be
1517 conventionally encrypted. These types of data files do not use a recipient
1518 public key but may be signed by using the <samp>--sign-keyid</samp> or
1519 <samp>--inquire-sign-keyid</samp> options. To remove all signers from a
1520 symmtrically encrypted data file, leave the option value empty. Note that
1521 you cannot change encryption schemes once a data file has been saved.
1522 </p>
1524 <hr>
1525 <a name="STORE"></a>
1526 <div class="header">
1528 Next: <a href="#UNLOCK" accesskey="n" rel="next">UNLOCK</a>, Previous: <a href="#SAVE" accesskey="p" rel="prev">SAVE</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1529 </div>
1530 <a name="STORE-command"></a>
1531 <h2 class="chapter">35 STORE command</h2>
1532 <a name="index-STORE-command"></a>
1533 <p>Syntax:
1534 </p><div class="example">
1535 <pre class="example">STORE element[&lt;TAB&gt;child[..]]&lt;TAB&gt;[content]
1536 </pre></div>
1538 <p>This command uses a server <em>INQUIRE</em> to retrieve data from the client.
1539 <br><br>
1540 Creates a new element path or modifies the <var>content</var> of an existing
1541 element. If only a single element is specified then a new root element is
1542 created. Otherwise, elements are <tt class="key">TAB</tt> delimited and the content will be
1543 set to the final <tt class="key">TAB</tt> delimited element. If no <var>content</var> is
1544 specified after the final <tt class="key">TAB</tt>, then the content of the existing
1545 element will be removed; or will be empty if creating a new element.
1546 <br><br>
1547 The only restriction of an element name is that it not contain whitespace
1548 characters. There is no other whitespace between the <tt class="key">TAB</tt> delimited
1549 elements. It is recommended that the content of an element be base64 encoded
1550 when it contains control or <tt class="key">TAB</tt> characters to prevent <abbr>XML</abbr>
1551 parsing and <code>pwmd</code> syntax errors.
1552 </p>
1554 <hr>
1555 <a name="UNLOCK"></a>
1556 <div class="header">
1558 Next: <a href="#XPATH" accesskey="n" rel="next">XPATH</a>, Previous: <a href="#STORE" accesskey="p" rel="prev">STORE</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1559 </div>
1560 <a name="UNLOCK-command"></a>
1561 <h2 class="chapter">36 UNLOCK command</h2>
1562 <a name="index-UNLOCK-command"></a>
1563 <p>Syntax:
1564 </p><div class="example">
1565 <pre class="example">UNLOCK
1566 </pre></div>
1568 <p>Unlocks the file mutex which was locked with the <code>LOCK</code> command or
1569 a commands&rsquo; <samp>--lock</samp> option (see <a href="#LOCK">LOCK</a>, see <a href="#OPEN">OPEN</a>,
1570 see <a href="#ISCACHED">ISCACHED</a>).
1571 </p>
1573 <hr>
1574 <a name="XPATH"></a>
1575 <div class="header">
1577 Next: <a href="#XPATHATTR" accesskey="n" rel="next">XPATHATTR</a>, Previous: <a href="#UNLOCK" accesskey="p" rel="prev">UNLOCK</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1578 </div>
1579 <a name="XPATH-command"></a>
1580 <h2 class="chapter">37 XPATH command</h2>
1581 <a name="index-XPATH-command"></a>
1582 <p>Syntax:
1583 </p><div class="example">
1584 <pre class="example">XPATH [--inquire] &lt;expression&gt;[&lt;TAB&gt;[value]]
1585 </pre></div>
1587 <p>Evaluates an XPath <var>expression</var>. If no <var>value</var> argument is
1588 specified it is assumed the expression is a request to return a result.
1589 Otherwise, the result is set to the <var>value</var> argument and the document is
1590 updated. If there is no <var>value</var> after the <tt class="key">TAB</tt> character, the value
1591 is assumed to be empty and the document is updated. For example:
1592 </p><br>
1593 <div class="example">
1594 <pre class="example">XPATH //element[@_name='password']<span class="key">TAB</span>
1595 </pre></div>
1596 <br>
1597 <p>would clear the content of all <var>password</var> elements in the data file
1598 while leaving off the trailing <tt class="key">TAB</tt> would return all <var>password</var>
1599 elements in <abbr>XML</abbr> format.
1600 <br><br>
1601 When the <samp>--inquire</samp> option is passed then all remaining non-option
1602 arguments are retrieved via a server <em>INQUIRE</em>.
1603 <br><br>
1604 See <a href="http://www.w3schools.com/xpath/xpath_syntax.asp">http://www.w3schools.com/xpath/xpath_syntax.asp</a> for <abbr>XPATH</abbr>
1605 expression syntax.
1606 </p>
1608 <hr>
1609 <a name="XPATHATTR"></a>
1610 <div class="header">
1612 Previous: <a href="#XPATH" accesskey="p" rel="prev">XPATH</a>, Up: <a href="#Commands" accesskey="u" rel="up">Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1613 </div>
1614 <a name="XPATHATTR-command"></a>
1615 <h2 class="chapter">38 XPATHATTR command</h2>
1616 <a name="index-XPATHATTR-command"></a>
1617 <p>Syntax:
1618 </p><div class="example">
1619 <pre class="example">XPATHATTR [--inquire] SET|DELETE &lt;name&gt; &lt;expression&gt;[&lt;TAB&gt;[&lt;value&gt;]]
1620 </pre></div>
1622 <p>Like the <code>XPATH</code> command (see <a href="#XPATH">XPATH</a>) but operates on element
1623 attributes and does not return a result. For the <var>SET</var> operation the
1624 <var>value</var> is optional but the field is required. If not specified then
1625 the attribute value will be empty. For example:
1626 </p><br>
1627 <div class="example">
1628 <pre class="example">XPATHATTR SET password //element[@_name='password']<span class="key">TAB</span>
1629 </pre></div>
1630 <br>
1631 <p>would create a <var>password</var> attribute for each <var>password</var> element
1632 found in the document. The attribute value will be empty but still exist.
1633 <br><br>
1634 When the <samp>--inquire</samp> option is passed then all remaining non-option
1635 arguments are retrieved via a server <em>INQUIRE</em>.
1636 <br><br>
1637 See <a href="http://www.w3schools.com/xpath/xpath_syntax.asp">http://www.w3schools.com/xpath/xpath_syntax.asp</a> for <abbr>XPATH</abbr>
1638 expression syntax.
1639 </p>
1642 <hr>
1643 <a name="Status-Messages"></a>
1644 <div class="header">
1646 Next: <a href="#Target-Attribute" accesskey="n" rel="next">Target Attribute</a>, Previous: <a href="#Commands" accesskey="p" rel="prev">Commands</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1647 </div>
1648 <a name="Status-messages-and-their-meanings"></a>
1649 <h2 class="chapter">39 Status messages and their meanings</h2>
1650 <p>Some commands send status messages to inform the client about certain
1651 operations or as a progress indicator. Status messages begin with a
1652 <code>KEYWORD</code> followed by a status description for status messages that
1653 require it. What status messages are sent, when, and how often may depend on
1654 configuration settings (see <a href="#Configuration">Configuration</a>).
1655 </p>
1656 <table>
1657 <thead><tr><th width="20%">Message</th><th width="25%">Parameters</th><th width="55%">Description</th></tr></thead>
1658 <tr><td width="20%">CACHE
1659 <a name="index-CACHE"></a></td><td width="25%"><code>&lt;integer&gt;</code></td><td width="55%">The number of cached documents. Sent to each client after connecting
1660 (see <a href="#GETINFO">GETINFO</a>) and after every cache modification.</td></tr>
1661 <tr><td width="20%">CLIENTS
1662 <a name="index-CLIENTS"></a></td><td width="25%"><code>&lt;integer&gt;</code></td><td width="55%">The number of connected clients (see <a href="#GETINFO">GETINFO</a>). Sent to each client
1663 when another client either connects or disconnects.</td></tr>
1664 <tr><td width="20%">DECRYPT
1665 <a name="index-DECRYPT"></a></td><td width="25%"></td><td width="55%">Sent to the current client during a decrypt operation. How often this
1666 status message is sent is determined by the <code>keepalive_interval</code>
1667 (see <a href="#Configuration">Configuration</a>) setting.</td></tr>
1668 <tr><td width="20%">ENCRYPT
1669 <a name="index-ENCRYPT"></a></td><td width="25%"></td><td width="55%">Sent to the current client during an encrypt operation. How often this
1670 status message is sent is determined by the <code>keepalive_interval</code>
1671 (see <a href="#Configuration">Configuration</a>) setting.</td></tr>
1672 <tr><td width="20%">GENKEY
1673 <a name="index-GENKEY"></a></td><td width="25%"><code>[&lt;sigkey_fpr&gt; &lt;pubkey_fpr&gt;]</code></td><td width="55%">Sent to the current client during key generation. How often this
1674 status message is sent is determined by the <code>keepalive_interval</code>
1675 (see <a href="#Configuration">Configuration</a>) setting. The <var>sigkey_fpr</var> and <var>pubkey_fpr</var>
1676 parameters are added when key generation has completed.</td></tr>
1677 <tr><td width="20%">INQUIRE_MAXLEN
1678 <a name="index-INQUIRE_005fMAXLEN"></a></td><td width="25%"><code>&lt;bytes&gt;</code></td><td width="55%">Sent to the client from <code>gpg-agent</code> when inquiring data. This
1679 specifies the maximum number of bytes allowed for the client to send and
1680 should not be exceeded.</td></tr>
1681 <tr><td width="20%">KEEPALIVE
1682 <a name="index-KEEPALIVE"></a></td><td width="25%"></td><td width="55%">Sent to each idle client every <var>keepalive_interval</var>
1683 (see <a href="#Configuration">Configuration</a>) seconds.</td></tr>
1684 <tr><td width="20%">LOCKED
1685 <a name="index-LOCKED"></a></td><td width="25%"></td><td width="55%">Sent to the current client when another client is holding the lock for
1686 the mutex associated with a file. How often this status message is sent is
1687 determined by the <code>keepalive_interval</code> (see <a href="#Configuration">Configuration</a>) setting.</td></tr>
1688 <tr><td width="20%">NEWFILE
1689 <a name="index-NEWFILE"></a></td><td width="25%"></td><td width="55%">Sent to the current client when the opened (see <a href="#OPEN">OPEN</a>) file does not
1690 exist on the file-system.</td></tr>
1691 <tr><td width="20%">XFER
1692 <a name="index-XFER"></a></td><td width="25%"><code>&lt;sent&gt; &lt;total&gt;</code></td><td width="55%">Sent to the current client when transferring data. It has two space
1693 delimited arguments. The first being the current amount of bytes transferred
1694 and the other being the total bytes to be transferred.</td></tr>
1695 <tr><td width="20%">STATE
1696 <a name="index-STATE"></a></td><td width="25%"><code>&lt;client_id&gt; &lt;state&gt;</code></td><td width="55%">Sent to each client to indicate that <var>client_id</var> has changed to
1697 <var>state</var> (see <a href="#GETINFO">GETINFO</a> for client states). For a client to receive
1698 another clients state the option <var>CLIENT-STATE</var> must be set.
1699 See <a href="#OPTION">OPTION</a> command.</td></tr>
1700 <tr><td width="20%">EXPIRE
1701 <a name="index-EXPIRE"></a></td><td width="25%"><code>&lt;epoch_seconds&gt; &lt;epoch_future&gt;|0</code></td><td width="55%">Sent to the current client when <code>GET</code> (see <a href="#GET">GET</a>) encounters an
1702 <code>expire</code> (see <a href="#Other-Attributes">Other Attributes</a>) attribute that is in the past or when
1703 <code>STORE</code> (see <a href="#STORE">STORE</a>) updates the <code>expire</code> attribute from the
1704 <code>expire_increment</code> attribute value. The second field will be <code>0</code>
1705 when <code>GET</code> sends this status message. Otherwise the second field is the
1706 time the next expiry will be.</td></tr>
1707 <tr><td width="20%">PASSPHRASE_HINT
1708 <a name="index-PASSPHRASE_005fHINT"></a></td><td width="25%">&lt;keyid&gt; &lt;userid&gt;</td><td width="55%">Forwarded from <code>GpgME</code>. Contains information that is useful in a
1709 <code>pinentry</code>. Only sent when pinentry is disabled (see <a href="#OPTION">OPTION</a>).</td></tr>
1710 <tr><td width="20%">PASSPHRASE_INFO
1711 <a name="index-PASSPHRASE_005fINFO"></a></td><td width="25%">&lt;flags&gt; ...</td><td width="55%">Forwarded from <code>GpgME</code>. Contains information that is useful in a
1712 <code>pinentry</code>. Only sent when pinentry is disabled (see <a href="#OPTION">OPTION</a>).</td></tr>
1713 <tr><td width="20%">REHANDSHAKE
1714 <a name="index-REHANDSHAKE"></a></td><td width="25%"></td><td width="55%">Sent to each TLS client just before performing a cipher renegotiation
1715 after a SIGHUP signal was received.</td></tr>
1716 </table>
1718 <hr>
1719 <a name="Target-Attribute"></a>
1720 <div class="header">
1722 Next: <a href="#Other-Attributes" accesskey="n" rel="next">Other Attributes</a>, Previous: <a href="#Status-Messages" accesskey="p" rel="prev">Status Messages</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1723 </div>
1724 <a name="The-target-attribute"></a>
1725 <h2 class="chapter">40 The <code>target</code> attribute</h2>
1726 <a name="index-target-attribute"></a>
1727 <p>A <em>case sensitive</em> attribute named <code>target</code> is treated specially
1728 when found in each element of an element path. This attribute, like other
1729 element attributes, is created or modified with the <code>ATTR</code> command
1730 (see <a href="#ATTR">ATTR</a>). The value of this attribute is an existing element path
1731 somewhere in the document. If you are familiar with XML entities or
1732 maybe the HTML <code>id</code> or <code>target</code> attributes or a symbolic link
1733 in a file-system, you may find this attribute behaves similar to any of those.
1734 </p>
1735 <p>To create a <code>target</code> attribute use the following syntax:
1736 </p>
1737 <div class="example">
1738 <pre class="example">ATTR SET target element[<code>TAB</code>child[..]] element[<code>TAB</code>child[..]]
1739 </pre></div>
1741 <p>Note the single space between the two element paths. The first element path is
1742 where the <code>target</code> attribute will be created. If the element path does
1743 not exist then it will be created. This is the only time the <code>ATTR</code>
1744 (see <a href="#ATTR">ATTR</a>) command will create elements. The attribute is created in the
1745 final element of the element path.
1746 </p>
1747 <p>The second element path is the destination of where you want the first element
1748 path to resolve to. When an element path is passed as an argument to a
1749 protocol command <code>pwmd</code> looks for a <code>target</code> attribute when
1750 resolving each element and, if found, &quot;jumps&quot; to the attribute value and
1751 continues resolving any remaining elements a commands element path.
1752 </p>
1753 <p>When an element of a element path is removed that a <code>target</code> attribute
1754 resolves to then an error will occur when trying to access that element. You
1755 may need to either update the <code>target</code> attribute value with a new element
1756 path or remove the attribute entirely.
1757 </p>
1758 <p>Clients should be careful of creating <code>target</code> loops, or targets that
1759 resolve to themselves. See the <var>recursion_depth</var> (see <a href="#Configuration">Configuration</a>)
1760 configuration parameter for details.
1761 </p>
1762 <p>The <code>REALPATH</code> command (see <a href="#REALPATH">REALPATH</a>) can be used to show the element
1763 path after resolving all <code>target</code> attributes.
1764 </p>
1765 <p><em>Note that when setting this attribute any children of the element will
1766 be removed.</em>
1767 </p>
1769 <hr>
1770 <a name="Other-Attributes"></a>
1771 <div class="header">
1773 Next: <a href="#Signals" accesskey="n" rel="next">Signals</a>, Previous: <a href="#Target-Attribute" accesskey="p" rel="prev">Target Attribute</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1774 </div>
1775 <a name="Other-special-attributes"></a>
1776 <h2 class="chapter">41 Other special attributes</h2>
1777 <a name="index-special-attributes"></a>
1778 <p>In addition to the <code>target</code> attribute (see <a href="#Target-Attribute">Target Attribute</a>), there
1779 are a few other attributes that are specially handled by <code>pwmd</code>. The
1780 first is the <code>_ctime</code> attribute which is set to the current time when an
1781 element is created. Next is the <code>_mtime</code> attribute which is created when
1782 an element is created and also updated when an element is modified. Both of
1783 these attributes may be removed but the <code>_mtime</code> attribute is
1784 automatically added again since removing an attribute is considered modifying
1785 an element. The <code>_acl</code> attribute controls access to the element, beit
1786 modifying or accessing element content, or descending into child elements.
1787 See <a href="#Access-Control">Access Control</a> for details. The <code>_name</code> attribute contains the
1788 name of an element.
1789 </p>
1790 <p>The above mentioned attributes are considered reserved attribute names.
1791 Reserved attributes are treated specially when a <code>target</code> attribute is
1792 found for the current element. The <code>ATTR LIST</code> command will show these
1793 attribute values for the current element and not the attribute values for the
1794 resolved <code>target</code> element. All other non-reserved attributes for the
1795 resolved <code>target</code> are appended to the <code>ATTR LIST</code> command output.
1796 Other <code>ATTR</code> commands (see <a href="#ATTR">ATTR</a>) behave as usual. You can, for example, <code>ATTR
1797 DELETE</code> a non-reserved attribute for an element that contains a <code>target</code>
1798 attribute. The resolved target elements&rsquo; attribute will be removed rather than
1799 the element containing the <code>target</code> attribute.
1800 </p>
1801 <p>Another specially handled attribute is the <code>expire</code> attribute. This
1802 attribute value, like the <code>_ctime</code> and <code>_mtime</code> attributes, is a
1803 timestamp. But this timestamp is usually in the future and for use with the
1804 <code>GET</code> (see <a href="#GET">GET</a>) and <code>STORE</code> (see <a href="#STORE">STORE</a>) commands. When the
1805 <code>GET</code> command is issued, it checks for an <code>expire</code> attribute an
1806 compares its&rsquo; value with the current time. If the <code>expire</code> timestamp is in
1807 the past then a status message is sent (see <a href="#Status-Messages">Status Messages</a>) to inform the
1808 client that the element content should be updated. When the content for an
1809 element containing an <code>expire</code> attribute is set when using the
1810 <code>STORE</code> command, the value of the <code>expire_increment</code> attribute is
1811 added to the current time and the <code>expire</code> attribute value is updated.
1812 When no <code>expire_increment</code> attribute is found, no modification is done of
1813 the <code>expire</code> attribute.
1814 </p>
1816 <hr>
1817 <a name="Signals"></a>
1818 <div class="header">
1820 Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Other-Attributes" accesskey="p" rel="prev">Other Attributes</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1821 </div>
1822 <a name="Recognized-signals"></a>
1823 <h2 class="chapter">42 Recognized signals</h2>
1825 <p>Sending the <em>SIGHUP</em> signal to a <code>pwmd</code> process will reload the
1826 configuration file and sending <em>SIGUSR1</em> will clear the entire file
1827 cache.
1828 </p>
1831 <hr>
1832 <a name="Concept-Index"></a>
1833 <div class="header">
1835 Previous: <a href="#Signals" accesskey="p" rel="prev">Signals</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>]</p>
1836 </div>
1837 <a name="Concept-Index-1"></a>
1838 <h2 class="unnumbered">Concept Index</h2>
1841 <a name="SEC_Overview"></a>
1842 <h2 class="shortcontents-heading">Short Table of Contents</h2>
1844 <div class="shortcontents">
1845 <ul class="no-bullet">
1846 <li><a name="stoc-Overview-of-pwmd" href="#toc-Overview-of-pwmd">1 Overview of <code>pwmd</code></a></li>
1847 <li><a name="stoc-Access-Control-1" href="#toc-Access-Control-1">2 Access Control</a></li>
1848 <li><a name="stoc-Invoking-pwmd" href="#toc-Invoking-pwmd">3 Invoking <code>pwmd</code></a></li>
1849 <li><a name="stoc-pwmd-configuration-file-options" href="#toc-pwmd-configuration-file-options">4 <code>pwmd</code> configuration file options</a></li>
1850 <li><a name="stoc-Configuring-remote-connections-over-TLS_002e" href="#toc-Configuring-remote-connections-over-TLS_002e">5 Configuring remote connections over TLS.</a></li>
1851 <li><a name="stoc-Pinentry-configuration" href="#toc-Pinentry-configuration">6 Pinentry configuration</a></li>
1852 <li><a name="stoc-Protocol-commands-and-their-syntax" href="#toc-Protocol-commands-and-their-syntax">7 Protocol commands and their syntax</a></li>
1853 <li><a name="stoc-ATTR-command" href="#toc-ATTR-command">8 ATTR command</a></li>
1854 <li><a name="stoc-CACHETIMEOUT-command" href="#toc-CACHETIMEOUT-command">9 CACHETIMEOUT command</a></li>
1855 <li><a name="stoc-CLEARCACHE-command" href="#toc-CLEARCACHE-command">10 CLEARCACHE command</a></li>
1856 <li><a name="stoc-COPY-command" href="#toc-COPY-command">11 COPY command</a></li>
1857 <li><a name="stoc-DELETE-command" href="#toc-DELETE-command">12 DELETE command</a></li>
1858 <li><a name="stoc-DUMP-command" href="#toc-DUMP-command">13 DUMP command</a></li>
1859 <li><a name="stoc-GET-command" href="#toc-GET-command">14 GET command</a></li>
1860 <li><a name="stoc-GETCONFIG-command" href="#toc-GETCONFIG-command">15 GETCONFIG command</a></li>
1861 <li><a name="stoc-GETINFO-command" href="#toc-GETINFO-command">16 GETINFO command</a></li>
1862 <li><a name="stoc-HELP-command" href="#toc-HELP-command">17 HELP command</a></li>
1863 <li><a name="stoc-IMPORT-command" href="#toc-IMPORT-command">18 IMPORT command</a></li>
1864 <li><a name="stoc-ISCACHED-command" href="#toc-ISCACHED-command">19 ISCACHED command</a></li>
1865 <li><a name="stoc-KEYINFO-command" href="#toc-KEYINFO-command">20 KEYINFO command</a></li>
1866 <li><a name="stoc-KILL-command" href="#toc-KILL-command">21 KILL command</a></li>
1867 <li><a name="stoc-LIST-command" href="#toc-LIST-command">22 LIST command</a></li>
1868 <li><a name="stoc-LISTKEYS-command" href="#toc-LISTKEYS-command">23 LISTKEYS command</a></li>
1869 <li><a name="stoc-LOCK-command" href="#toc-LOCK-command">24 LOCK command</a></li>
1870 <li><a name="stoc-LS-command" href="#toc-LS-command">25 LS command</a></li>
1871 <li><a name="stoc-MOVE-command" href="#toc-MOVE-command">26 MOVE command</a></li>
1872 <li><a name="stoc-NOP-command" href="#toc-NOP-command">27 NOP command</a></li>
1873 <li><a name="stoc-OPEN-command" href="#toc-OPEN-command">28 OPEN command</a></li>
1874 <li><a name="stoc-OPTION-command" href="#toc-OPTION-command">29 OPTION command</a></li>
1875 <li><a name="stoc-PASSWD-command" href="#toc-PASSWD-command">30 PASSWD command</a></li>
1876 <li><a name="stoc-REALPATH-command" href="#toc-REALPATH-command">31 REALPATH command</a></li>
1877 <li><a name="stoc-RENAME-command" href="#toc-RENAME-command">32 RENAME command</a></li>
1878 <li><a name="stoc-RESET-command" href="#toc-RESET-command">33 RESET command</a></li>
1879 <li><a name="stoc-SAVE-command" href="#toc-SAVE-command">34 SAVE command</a></li>
1880 <li><a name="stoc-STORE-command" href="#toc-STORE-command">35 STORE command</a></li>
1881 <li><a name="stoc-UNLOCK-command" href="#toc-UNLOCK-command">36 UNLOCK command</a></li>
1882 <li><a name="stoc-XPATH-command" href="#toc-XPATH-command">37 XPATH command</a></li>
1883 <li><a name="stoc-XPATHATTR-command" href="#toc-XPATHATTR-command">38 XPATHATTR command</a></li>
1884 <li><a name="stoc-Status-messages-and-their-meanings" href="#toc-Status-messages-and-their-meanings">39 Status messages and their meanings</a></li>
1885 <li><a name="stoc-The-target-attribute" href="#toc-The-target-attribute">40 The <code>target</code> attribute</a></li>
1886 <li><a name="stoc-Other-special-attributes" href="#toc-Other-special-attributes">41 Other special attributes</a></li>
1887 <li><a name="stoc-Recognized-signals" href="#toc-Recognized-signals">42 Recognized signals</a></li>
1888 <li><a name="stoc-Concept-Index-1" href="#toc-Concept-Index-1">Concept Index</a></li>
1890 </ul>
1891 </div>
1893 <a name="SEC_Contents"></a>
1894 <h2 class="contents-heading">Table of Contents</h2>
1896 <div class="contents">
1897 <ul class="no-bullet">
1898 <li><a name="toc-Overview-of-pwmd" href="#Introduction">1 Overview of <code>pwmd</code></a></li>
1899 <li><a name="toc-Access-Control-1" href="#Access-Control">2 Access Control</a></li>
1900 <li><a name="toc-Invoking-pwmd" href="#Invoking">3 Invoking <code>pwmd</code></a></li>
1901 <li><a name="toc-pwmd-configuration-file-options" href="#Configuration">4 <code>pwmd</code> configuration file options</a></li>
1902 <li><a name="toc-Configuring-remote-connections-over-TLS_002e" href="#TLS">5 Configuring remote connections over TLS.</a></li>
1903 <li><a name="toc-Pinentry-configuration" href="#Pinentry">6 Pinentry configuration</a></li>
1904 <li><a name="toc-Protocol-commands-and-their-syntax" href="#Commands">7 Protocol commands and their syntax</a></li>
1905 <li><a name="toc-ATTR-command" href="#ATTR">8 ATTR command</a></li>
1906 <li><a name="toc-CACHETIMEOUT-command" href="#CACHETIMEOUT">9 CACHETIMEOUT command</a></li>
1907 <li><a name="toc-CLEARCACHE-command" href="#CLEARCACHE">10 CLEARCACHE command</a></li>
1908 <li><a name="toc-COPY-command" href="#COPY">11 COPY command</a></li>
1909 <li><a name="toc-DELETE-command" href="#DELETE">12 DELETE command</a></li>
1910 <li><a name="toc-DUMP-command" href="#DUMP">13 DUMP command</a></li>
1911 <li><a name="toc-GET-command" href="#GET">14 GET command</a></li>
1912 <li><a name="toc-GETCONFIG-command" href="#GETCONFIG">15 GETCONFIG command</a></li>
1913 <li><a name="toc-GETINFO-command" href="#GETINFO">16 GETINFO command</a></li>
1914 <li><a name="toc-HELP-command" href="#HELP">17 HELP command</a></li>
1915 <li><a name="toc-IMPORT-command" href="#IMPORT">18 IMPORT command</a></li>
1916 <li><a name="toc-ISCACHED-command" href="#ISCACHED">19 ISCACHED command</a></li>
1917 <li><a name="toc-KEYINFO-command" href="#KEYINFO">20 KEYINFO command</a></li>
1918 <li><a name="toc-KILL-command" href="#KILL">21 KILL command</a></li>
1919 <li><a name="toc-LIST-command" href="#LIST">22 LIST command</a></li>
1920 <li><a name="toc-LISTKEYS-command" href="#LISTKEYS">23 LISTKEYS command</a></li>
1921 <li><a name="toc-LOCK-command" href="#LOCK">24 LOCK command</a></li>
1922 <li><a name="toc-LS-command" href="#LS">25 LS command</a></li>
1923 <li><a name="toc-MOVE-command" href="#MOVE">26 MOVE command</a></li>
1924 <li><a name="toc-NOP-command" href="#NOP">27 NOP command</a></li>
1925 <li><a name="toc-OPEN-command" href="#OPEN">28 OPEN command</a></li>
1926 <li><a name="toc-OPTION-command" href="#OPTION">29 OPTION command</a></li>
1927 <li><a name="toc-PASSWD-command" href="#PASSWD">30 PASSWD command</a></li>
1928 <li><a name="toc-REALPATH-command" href="#REALPATH">31 REALPATH command</a></li>
1929 <li><a name="toc-RENAME-command" href="#RENAME">32 RENAME command</a></li>
1930 <li><a name="toc-RESET-command" href="#RESET">33 RESET command</a></li>
1931 <li><a name="toc-SAVE-command" href="#SAVE">34 SAVE command</a></li>
1932 <li><a name="toc-STORE-command" href="#STORE">35 STORE command</a></li>
1933 <li><a name="toc-UNLOCK-command" href="#UNLOCK">36 UNLOCK command</a></li>
1934 <li><a name="toc-XPATH-command" href="#XPATH">37 XPATH command</a></li>
1935 <li><a name="toc-XPATHATTR-command" href="#XPATHATTR">38 XPATHATTR command</a></li>
1936 <li><a name="toc-Status-messages-and-their-meanings" href="#Status-Messages">39 Status messages and their meanings</a></li>
1937 <li><a name="toc-The-target-attribute" href="#Target-Attribute">40 The <code>target</code> attribute</a></li>
1938 <li><a name="toc-Other-special-attributes" href="#Other-Attributes">41 Other special attributes</a></li>
1939 <li><a name="toc-Recognized-signals" href="#Signals">42 Recognized signals</a></li>
1940 <li><a name="toc-Concept-Index-1" href="#Concept-Index">Concept Index</a></li>
1942 </ul>
1943 </div>
1945 <hr>
1949 </body>
1950 </html>