Bump version for development.
[pwmd.git] / doc / pwmd.html
blobea1d074776b26f40bdf01d36b7a3e903350fabda
1 <!DOCTYPE html>
2 <html>
3 <!-- Created by GNU Texinfo 7.1.1, https://www.gnu.org/software/texinfo/ -->
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
6 <title>pwmd Manual</title>
8 <meta name="description" content="pwmd Manual">
9 <meta name="keywords" content="pwmd Manual">
10 <meta name="resource-type" content="document">
11 <meta name="distribution" content="global">
12 <meta name="Generator" content="makeinfo">
13 <meta name="viewport" content="width=device-width,initial-scale=1">
15 <link href="#Top" rel="start" title="Top">
16 <link href="#Index" rel="index" title="Index">
17 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
18 <link href="dir.html#Top" rel="up" title="(dir)">
19 <style type="text/css">
20 <!--
21 a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
22 a.summary-letter-printindex {text-decoration: none}
23 div.example {margin-left: 3.2em}
24 kbd.key {font-style: normal}
25 span:hover a.copiable-link {visibility: visible}
26 td.printindex-index-entry {vertical-align: top}
27 td.printindex-index-section {vertical-align: top; padding-left: 1em}
28 th.entries-header-printindex {text-align:left}
29 th.sections-header-printindex {text-align:left; padding-left: 1em}
30 ul.toc-numbered-mark {list-style: none}
31 -->
32 </style>
35 </head>
37 <body lang="en">
42 <div class="top-level-extent" id="Top">
43 <div class="nav-panel">
44 <p>
45 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>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
46 </div>
47 <a class="top" id="SEC_Top"></a>
50 <div class="element-contents" id="SEC_Contents">
51 <h2 class="contents-heading">Table of Contents</h2>
53 <div class="contents">
55 <ul class="toc-numbered-mark">
56 <li><a id="toc-Overview-of-pwmd" href="#Introduction">1 Overview of <code class="command">pwmd</code></a></li>
57 <li><a id="toc-Access-Control-1" href="#Access-Control">2 Access Control</a></li>
58 <li><a id="toc-Cache-Control-1" href="#Cache-Control">3 Cache Control</a></li>
59 <li><a id="toc-Invoking-pwmd" href="#Invoking">4 Invoking <code class="command">pwmd</code></a></li>
60 <li><a id="toc-pwmd-configuration-file-options" href="#Configuration">5 <code class="command">pwmd</code> configuration file options</a></li>
61 <li><a id="toc-Configuring-remote-connections-over-TLS_002e" href="#TLS">6 Configuring remote connections over TLS.</a></li>
62 <li><a id="toc-Pinentry-configuration" href="#Pinentry">7 Pinentry configuration</a></li>
63 <li><a id="toc-Protocol-commands-and-their-syntax" href="#Commands">8 Protocol commands and their syntax</a>
64 <ul class="toc-numbered-mark">
65 <li><a id="toc-Modifying-element-attributes_002e" href="#ATTR">8.1 Modifying element attributes.</a></li>
66 <li><a id="toc-Run-a-series-of-commands-in-sequence_002e" href="#BULK">8.2 Run a series of commands in sequence.</a></li>
67 <li><a id="toc-Setting-the-cache-timeout_002e" href="#CACHETIMEOUT">8.3 Setting the cache timeout.</a></li>
68 <li><a id="toc-Removing-a-cache-entry_002e" href="#CLEARCACHE">8.4 Removing a cache entry.</a></li>
69 <li><a id="toc-Copying-an-element_002e" href="#COPY">8.5 Copying an element.</a></li>
70 <li><a id="toc-Deleting-an-element_002e" href="#DELETE">8.6 Deleting an element.</a></li>
71 <li><a id="toc-Deleting-a-key-from-the-key-ring_002e" href="#DELETEKEY">8.7 Deleting a key from the key ring.</a></li>
72 <li><a id="toc-Showing-the-XML-document_002e" href="#DUMP">8.8 Showing the XML document.</a></li>
73 <li><a id="toc-Generating-a-new-key_002e" href="#GENKEY">8.9 Generating a new key.</a></li>
74 <li><a id="toc-Getting-the-content-of-an-element_002e" href="#GET">8.10 Getting the content of an element.</a></li>
75 <li><a id="toc-Obtaining-a-configuration-value_002e" href="#GETCONFIG">8.11 Obtaining a configuration value.</a></li>
76 <li><a id="toc-Obtaining-server-and-client-information_002e" href="#GETINFO">8.12 Obtaining server and client information.</a></li>
77 <li><a id="toc-Showing-available-commands_002e" href="#HELP">8.13 Showing available commands.</a></li>
78 <li><a id="toc-Creating-elements-from-XML_002e" href="#IMPORT">8.14 Creating elements from XML.</a></li>
79 <li><a id="toc-Testing-cache-status_002e" href="#ISCACHED">8.15 Testing cache status.</a></li>
80 <li><a id="toc-Showing-keys-used-for-the-current-data-file_002e" href="#KEYINFO">8.16 Showing keys used for the current data file.</a></li>
81 <li><a id="toc-Terminating-another-client_002e" href="#KILL">8.17 Terminating another client.</a></li>
82 <li><a id="toc-Showing-document-elements_002e" href="#LIST">8.18 Showing document elements.</a></li>
83 <li><a id="toc-Listing-keys-in-the-key-ring_002e" href="#LISTKEYS">8.19 Listing keys in the key ring.</a></li>
84 <li><a id="toc-Locking-the-current-data-file_002e" href="#LOCK">8.20 Locking the current data file.</a></li>
85 <li><a id="toc-Showing-available-data-files_002e" href="#LS">8.21 Showing available data files.</a></li>
86 <li><a id="toc-Moving-an-element_002e" href="#MOVE">8.22 Moving an element.</a></li>
87 <li><a id="toc-Testing-the-connection_002e" href="#NOP">8.23 Testing the connection.</a></li>
88 <li><a id="toc-Opening-a-data-file_002e" href="#OPEN">8.24 Opening a data file.</a></li>
89 <li><a id="toc-Setting-various-client-parameters_002e" href="#OPTION">8.25 Setting various client parameters.</a></li>
90 <li><a id="toc-Changing-the-passphrase-for-a-key_002e" href="#PASSWD">8.26 Changing the passphrase for a key.</a></li>
91 <li><a id="toc-Resolving-an-element_002e" href="#REALPATH">8.27 Resolving an element.</a></li>
92 <li><a id="toc-Renaming-an-element_002e" href="#RENAME">8.28 Renaming an element.</a></li>
93 <li><a id="toc-Resetting-the-client-state_002e" href="#RESET">8.29 Resetting the client state.</a></li>
94 <li><a id="toc-Saving-document-changes-to-disk_002e" href="#SAVE">8.30 Saving document changes to disk.</a></li>
95 <li><a id="toc-Modifying-the-content-of-an-element_002e" href="#STORE">8.31 Modifying the content of an element.</a></li>
96 <li><a id="toc-Removing-a-data-file-lock_002e" href="#UNLOCK">8.32 Removing a data file lock.</a></li>
97 <li><a id="toc-Modifying-more-than-one-element_002e" href="#XPATH">8.33 Modifying more than one element.</a></li>
98 <li><a id="toc-Modifying-more-than-one-element_0027s-attributes_002e" href="#XPATHATTR">8.34 Modifying more than one element&rsquo;s attributes.</a></li>
99 </ul></li>
100 <li><a id="toc-Running-multiple-commands-in-sequence" href="#Bulk-Commands">9 Running multiple commands in sequence</a></li>
101 <li><a id="toc-Status-messages-and-their-meanings" href="#Status-Messages">10 Status messages and their meanings</a></li>
102 <li><a id="toc-The-target-attribute" href="#Target-Attribute">11 The <code class="code">target</code> attribute</a></li>
103 <li><a id="toc-Other-special-attributes" href="#Other-Attributes">12 Other special attributes</a></li>
104 <li><a id="toc-Key-Expiration-1" href="#Key-Expiration">13 Key Expiration</a></li>
105 <li><a id="toc-Recognized-signals" href="#Signals">14 Recognized signals</a></li>
106 <li><a id="toc-Index-1" href="#Index" rel="index">Index</a></li>
107 </ul>
108 </div>
109 </div>
110 <hr>
111 <div class="chapter-level-extent" id="Introduction">
112 <div class="nav-panel">
114 Next: <a href="#Access-Control" accesskey="n" rel="next">Access Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
115 </div>
116 <h2 class="chapter" id="Overview-of-pwmd"><span>1 Overview of <code class="command">pwmd</code><a class="copiable-link" href="#Overview-of-pwmd"> &para;</a></span></h2>
123 <p><em class="dfn">Password Manager Daemon</em> (or <code class="command">pwmd</code>) is a server that users or
124 applications connect to and send commands to store and retrieve data that is
125 stored in an OpenPGP encrypted <abbr class="acronym">XML</abbr> document. It mimics a filesystem
126 in a lot of ways including per element <abbr class="acronym">ACL</abbr>&rsquo;s, but also has the
127 advantage of remote connections over <abbr class="acronym">TLS</abbr> and a document cache. The
128 document cache is needed for a data file encrypted with secret keys stored on
129 a smartcard and without availability of an <abbr class="acronym">HSM</abbr>.
130 </p>
131 <p>The server uses the Assuan protocol and is the same used by
132 <code class="command">gpg-agent</code>, <code class="command">pinentry</code>, <code class="command">gpgme</code> and
133 <code class="command">scdaemon</code>. It also uses <cite class="cite">libgpg-error</cite> for error reporting with
134 <var class="var">GPG_ERR_SOURCE_USER_1</var> being the error source.
135 </p>
137 <p>The <abbr class="acronym">XML</abbr> document uses the following <abbr class="acronym">DTD</abbr>:
138 </p>
139 <div class="example">
140 <pre class="example-preformatted"> &lt;?xml version=&quot;1.0&quot;?&gt;
141 &lt;!DOCTYPE pwmd [
142 &lt;!ELEMENT pwmd (element*)&gt;
143 &lt;!ATTLIST element _name CDATA #REQUIRED&gt;
144 ]&gt;
145 </pre></div>
147 <p>The <code class="code">pwmd</code> element is the document root node while all other elements
148 of the document have the name <code class="code">element</code> with an attribute <code class="code">_name</code>
149 whose value uniquely identifies the element at the current element tree depth.
150 It is done this way to avoid <abbr class="acronym">XML</abbr> parsing errors for commonly used
151 characters. A <abbr class="acronym">URL</abbr> for example would be an invalid <abbr class="acronym">XML</abbr>
152 element since the <abbr class="acronym">URI</abbr> contains a &lsquo;<samp class="samp">:</samp>&rsquo; which is also the
153 <abbr class="acronym">XML</abbr> namespace separator.
154 </p>
155 <p>As mentioned, an element name must be unique for the current element tree
156 depth. You cannot have two elements containing the same <code class="code">_name</code> attribute
157 value. <code class="command">pwmd</code> will stop searching for an element of an <em class="emph">element
158 path</em> at the first match then continue searching for the next element of the
159 element path beginning at the child node of the matched element.
160 </p>
161 <p>An <em class="emph">element path</em> is a <code class="code">TAB</code> delimited character string where each
162 <code class="code">TAB</code> separates each element in the path. For example, the element path
163 <code class="code">a<code class="code">TAB</code>b<code class="code">TAB</code>c</code> has the following <abbr class="acronym">XML</abbr> document
164 structure:
165 </p>
166 <div class="example">
167 <pre class="example-preformatted"> &lt;pwmd&gt;
168 &lt;element _name=&quot;a&quot;&gt;
169 &lt;element _name=&quot;b&quot;&gt;
170 &lt;element _name=&quot;c&quot;&gt;
171 [... element value or content ...]
172 &lt;/element&gt;
173 &lt;/element&gt;
174 &lt;/element&gt;
175 &lt;/pwmd&gt;
176 </pre></div>
178 <p>The only restriction of an element name is that it contain no whitespace
179 characters.
180 </p>
181 <hr>
182 </div>
183 <div class="chapter-level-extent" id="Access-Control">
184 <div class="nav-panel">
186 Next: <a href="#Cache-Control" accesskey="n" rel="next">Cache Control</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Overview of <code class="command">pwmd</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
187 </div>
188 <h2 class="chapter" id="Access-Control-1"><span>2 Access Control<a class="copiable-link" href="#Access-Control-1"> &para;</a></span></h2>
190 <p>Like a filesystem has an <abbr class="acronym">ACL</abbr> to grant or limit access to directories
191 or files for a specific user or group, <code class="command">pwmd</code> can limit a local user,
192 group, <abbr class="acronym">TLS</abbr> connection or a command to a specific element path. This
193 is done by storing an <abbr class="acronym">ACL</abbr> in the element attribute <var class="var">_acl</var>. Its
194 syntax is similar to the <var class="var">allowed</var> configuration parameter
195 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) with the exception that a <abbr class="acronym">TLS</abbr> fingerprint
196 hash is prefixed with a <code class="code">#</code>.
197 </p>
198 <p>Access is denied for any user that is not in the <abbr class="acronym">ACL</abbr> of an element
199 with the exception of an invoking user (see <var class="var">invoking_user</var>). The
200 connected client must be in the <abbr class="acronym">ACL</abbr> for each element in an element
201 path otherwise an error is returned.
202 </p>
203 <p>The first user listed in the <abbr class="acronym">ACL</abbr> is considered the owner of the
204 element and must be a username or <abbr class="acronym">TLS</abbr> fingerprint. This determines
205 which clients may modify an <var class="var">_acl</var> attribute and store content for an
206 element. An <var class="var">invoking_user</var> may always modify an <abbr class="acronym">ACL</abbr>. As an
207 example:
208 </p>
209 <div class="example">
210 <pre class="example-preformatted">&lt;element _name=&quot;test&quot; _acl=&quot;username,-@wheel,root,#ABCDEF,/usr/bin/pwmc&quot;&gt;
211 &lt;element _name=&quot;child&quot;/&gt;
212 &lt;/element&gt;
213 </pre></div>
215 <p>The user <code class="code">username</code> would be allowed both read and write access to the
216 <code class="code">test</code> element but not if it is a member of the <code class="code">wheel</code> group
217 although, the <code class="code">root</code> user, who may be a member of the <code class="code">wheel</code> group,
218 is allowed read-only access. The SHA-256 <abbr class="acronym">TLS</abbr> fingerprint hash
219 <code class="code">#ABCDEF</code> is also allowed. No users other than an <var class="var">invoking_user</var>
220 are allowed access to the <code class="code">child</code> element. When a command path is found
221 in the <var class="var">_acl</var> then the local client command name must match one of the
222 command paths in the <var class="var">_acl</var> unless the client is the owner of the element.
223 The ability to specify read and write access for each user in an <abbr class="acronym">ACL</abbr>
224 is a feature planned for a later release.
225 </p>
226 <hr>
227 </div>
228 <div class="chapter-level-extent" id="Cache-Control">
229 <div class="nav-panel">
231 Next: <a href="#Invoking" accesskey="n" rel="next">Invoking <code class="command">pwmd</code></a>, Previous: <a href="#Access-Control" accesskey="p" rel="prev">Access Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
232 </div>
233 <h2 class="chapter" id="Cache-Control-1"><span>3 Cache Control<a class="copiable-link" href="#Cache-Control-1"> &para;</a></span></h2>
237 <p>While <code class="command">pwmd</code> has its own cache settings for an <abbr class="acronym">XML</abbr> document,
238 <code class="command">gpg-agent</code> has cache settings for the keys used for crypto operations
239 of a data file. Specifically the <samp class="option">ignore-cache-for-signing</samp>,
240 <samp class="option">default-cache-ttl</samp> and <samp class="option">max-cache-ttl</samp> options. These
241 <code class="command">gpg-agent</code> options may need to be adjusted depending on your usage
242 needs. For example, the <code class="code">OPEN</code> command may not require a passphrase to
243 open a data file due to the gpg-agent having a cached key even though the
244 <code class="code">ISCACHED</code> command returns an error indicating the data file is not
245 cached; which usually means a passphrase would be required. Keys for symmetric
246 data files are never kept in the <code class="command">gpg-agent</code> cache regardless of
247 <code class="command">gpg-agent</code> cache settings.
248 </p>
249 <p>A copy-on-write operation is done for commands that modify the document; the
250 client that invoked the command will work on a copy of the in-memory document.
251 The first client to <code class="code">SAVE</code> the changes to disk will require other clients
252 to reopen the data file due to the checksum being updated.
253 </p>
254 <hr>
255 </div>
256 <div class="chapter-level-extent" id="Invoking">
257 <div class="nav-panel">
259 Next: <a href="#Configuration" accesskey="n" rel="next"><code class="command">pwmd</code> configuration file options</a>, Previous: <a href="#Cache-Control" accesskey="p" rel="prev">Cache Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
260 </div>
261 <h2 class="chapter" id="Invoking-pwmd"><span>4 Invoking <code class="command">pwmd</code><a class="copiable-link" href="#Invoking-pwmd"> &para;</a></span></h2>
264 <p><code class="command">pwmd</code> uses GpgME for encryption, decryption and signing of the
265 OpenPGP data file. GpgME itself makes use of <code class="command">gpg</code> for these
266 operations so some configuration of <code class="command">gpg</code> may be needed. Pwmd spawns
267 a separate <code class="command">gpg-agent</code> process when <var class="var">gpg_homedir</var>
268 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) is not set to an instance of an already running
269 gpg-agent. Any <code class="command">gpg</code> configuration options that you need set should be
270 put in <var class="var">~/.pwmd/.gnupg/gpg.conf</var> or the <var class="var">gpg.conf</var> file located in
271 <var class="var">gpg_homedir</var>. The same is true for the <var class="var">gpg-agent.conf</var> file to set
272 any required <code class="command">gpg-agent</code> options.
273 </p>
274 <p>It is recommended to pass the <samp class="option">--allow-preset-passphrase</samp>
275 option to <code class="command">gpg-agent</code>. Doing so allows <code class="command">pwmd</code>
276 cache pushing on startup. It is also recommended to pass the
277 <samp class="option">--allow-loopback-pinentry</samp> to <code class="command">gpg-agent</code> (this is the default
278 as of gnupg-2.1.15). This option allows a passphrase to be inquired from
279 <code class="command">pwmd</code> when a <code class="command">pinentry</code> is unavailable to the client
280 (see <a class="pxref" href="#TLS">Configuring remote connections over TLS.</a>).
281 </p>
282 <p>If you would like to use a keypair from your default gnupg keyring located in
283 ~/.gnupg, but would still like to use a separate gpg-agent process (the
284 default), you would need to first export the public key from the default
285 keyring then import it into the keyring that pwmd uses. You can do this by
286 first exporting the public key, then use the <samp class="option">--homedir ~/.pwmd/.gnupg</samp>
287 option of <code class="command">gpg</code> to import it into the new keyring. For private keys,
288 you would need to copy the private key associated with the exported public key
289 to <var class="var">~/.pwmd/.gnupg/private-keys-v1.d</var>. If the private key is stored on
290 a smartcard you can also use the <code class="code">KEYINFO --learn</code> command
291 (see <a class="pxref" href="#KEYINFO">Showing keys used for the current data file.</a>).
292 </p>
293 <a class="index-entry-id" id="index-Running-pwmd"></a>
294 <p><code class="command">pwmd</code> is executed as follows:
295 </p>
296 <div class="example">
297 <pre class="example-preformatted">pwmd <var class="var">options</var> [ file1 ] [ ... ]
298 </pre></div>
300 <p>Non-option arguments are data files to cache upon startup. When the data file
301 requires a passphrase for decryption a <code class="command">pinentry</code> will prompt either
302 on the current TTY or from an X11 window when the <code class="env">DISPLAY</code>
303 environment variable is set. See <a class="xref" href="#Pinentry">Pinentry configuration</a>.
304 </p>
305 <a class="index-entry-id" id="index-Options"></a>
306 <a class="index-entry-id" id="index-Arguments"></a>
307 <p>The following command line options are supported:
308 </p>
309 <a class="index-entry-id" id="index-Getting-help"></a>
310 <dl class="table">
311 <dt>&lsquo;<samp class="samp">--debug protocol:level[,protocol:level]</samp>&rsquo;</dt>
312 <dd><p>Enable debugging output. This option can output sensitive information such as
313 passphrases and secret keys so care should be taken where the output gets
314 written to. The <var class="var">protocol</var> is a single character representing the protocol
315 to log. Use <code class="code">a</code> for <code class="code">libassuan</code> with <var class="var">level</var> being one or more
316 character flags: <code class="code">i</code> for init, <code class="code">x</code> for context, <code class="code">e</code> for engine,
317 <code class="code">d</code> for data, <code class="code">s</code> for system IO or <code class="code">c</code> for control. To debug
318 <code class="code">gpgme</code> use <code class="code">g</code> as the <var class="var">protocol</var> with <var class="var">level</var> being an
319 integer from <code class="code">1</code> to <code class="code">9</code>. To enable <abbr class="acronym">TLS</abbr> debugging output
320 use <code class="code">t</code> as the <var class="var">protocol</var> with <var class="var">level</var> being an integer from
321 <code class="code">1</code> to <code class="code">9</code>. A value over <code class="code">10</code> will enable all <abbr class="acronym">TLS</abbr>
322 debugging output with <code class="code">1</code> being the default.
323 </p>
324 </dd>
325 <dt>&lsquo;<samp class="samp">--homedir directory</samp>&rsquo;</dt>
326 <dd><p>The root directory where pwmd will store its data and temporary files. The
327 default is <samp class="file">~/.pwmd</samp>.
328 </p>
329 </dd>
330 <dt>&lsquo;<samp class="samp">--rcfile, -f rcfile</samp>&rsquo;</dt>
331 <dd><p>Specify an alternate configuration file. The default is
332 <samp class="file">~/.pwmd/config</samp>.
333 </p>
334 </dd>
335 <dt>&lsquo;<samp class="samp">--kill</samp>&rsquo;</dt>
336 <dd><p>Terminate an existing instance of pwmd. The process to terminate is determined
337 from the <samp class="option">--homedir</samp> and <samp class="option">--rcfile</samp> options.
338 </p>
339 </dd>
340 <dt>&lsquo;<samp class="samp">--import, -I filename|-</samp>&rsquo;</dt>
341 <dd><p>Imports the <abbr class="acronym">XML</abbr> <var class="var">filename</var>. When <var class="var">filename</var> is <code class="code">-</code> the
342 <abbr class="acronym">XML</abbr> is read from <code class="code">stdin</code>. The <abbr class="acronym">XML</abbr> file should be in conformance to
343 the <code class="command">pwmd</code> <abbr class="acronym">DTD</abbr> (see <a class="pxref" href="#Introduction">Overview of <code class="command">pwmd</code></a>). You will be prompted for
344 a passphrase to encrypt with. The output is written to the filename specified
345 with <samp class="option">--outfile</samp>. To make use of the imported data, place the output
346 file in <samp class="file">~/.pwmd/data</samp>.
347 </p>
348 </dd>
349 <dt>&lsquo;<samp class="samp">--output, -o filename|-</samp>&rsquo;</dt>
350 <dd><p>When importing, write the encrypted data file to <var class="var">filename</var>. When
351 <var class="var">filename</var> is <code class="code">-</code> output will be written to <code class="code">stdout</code>.
352 </p>
353 </dd>
354 <dt>&lsquo;<samp class="samp">--passphrase-file, -k filename&quot;</samp>&rsquo;</dt>
355 <dd><p>Obtain the passphrase to use when importing from the specified <var class="var">filename</var>.
356 </p>
357 </dd>
358 <dt>&lsquo;<samp class="samp">--keyid fingerprint[,fingerprint,&hellip;]</samp>&rsquo;</dt>
359 <dd><p>Specifies the fingerprint of the encryption key to use as a recipient when
360 importing. When not specified a new key-pair will be created.
361 </p>
362 </dd>
363 <dt>&lsquo;<samp class="samp">--sign-keyid fingerprint</samp>&rsquo;</dt>
364 <dd><p>Specifies the fingerprint of the signing key to use for signing of the data
365 file when importing. When not specified the signing key of the generated
366 key-pair or the signing key of the <samp class="option">--keyid</samp> option will be used.
367 </p>
368 </dd>
369 <dt>&lsquo;<samp class="samp">--symmetric, -s</samp>&rsquo;</dt>
370 <dd><p>Use symmetric or conventional encryption rather than pubic key encryption when
371 importing. Signing is still possible by using the <samp class="option">--sign-keyid</samp>
372 option. By default no signing is done when specifying this option.
373 </p>
374 </dd>
375 <dt>&lsquo;<samp class="samp">--userid string</samp>&rsquo;</dt>
376 <dd><p>When importing, the user id used to identify the generated key. This should be
377 in the form <code class="code">First Last &lt;email&gt;</code>.
378 </p>
379 </dd>
380 <dt>&lsquo;<samp class="samp">--algo string</samp>&rsquo;</dt>
381 <dd><p>When importing, the algorithm to use when generating the new key pair. The
382 default is determined by <code class="command">gpg</code>.
383 </p>
384 </dd>
385 <dt>&lsquo;<samp class="samp">--expire seconds</samp>&rsquo;</dt>
386 <dd><p>When importing, the time, in seconds since epoch, when the generated key will
387 expire. Specifying <code class="code">0</code> will never expire the key. The default is three
388 years.
389 </p>
390 </dd>
391 <dt>&lsquo;<samp class="samp">--no-passphrase</samp>&rsquo;</dt>
392 <dd><p>When importing, don&rsquo;t require a passphrase for the generated key.
393 </p>
394 </dd>
395 <dt>&lsquo;<samp class="samp">--disable-dump</samp>&rsquo;</dt>
396 <dd><p>Disable the <code class="code">XPATH</code>, <code class="code">XPATHATTR</code>, <code class="code">LIST</code> and <code class="code">DUMP</code>
397 protocol commands (see <a class="pxref" href="#Commands">Protocol commands and their syntax</a>). This overrides any
398 <var class="var">disable_list_and_dump</var> configuration parameter (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>).
399 </p>
400 </dd>
401 <dt>&lsquo;<samp class="samp">--no-fork, -n</samp>&rsquo;</dt>
402 <dd><p>Run as a foreground process and do not fork into the background.
403 </p>
404 </dd>
405 <dt>&lsquo;<samp class="samp">--force</samp>&rsquo;</dt>
406 <dd><p>Ignore cache pushing failures on startup. By default, <code class="command">pwmd</code> will exit
407 if an error occurred due to an invalid passphrase or other error.
408 </p>
409 </dd>
410 <dt>&lsquo;<samp class="samp">--version</samp>&rsquo;</dt>
411 <dd><p>Show the version, copyright and compile time features and exit.
412 </p>
413 </dd>
414 <dt>&lsquo;<samp class="samp">--help</samp>&rsquo;</dt>
415 <dd><p>Print a summary of options.
416 </p></dd>
417 </dl>
420 <hr>
421 </div>
422 <div class="chapter-level-extent" id="Configuration">
423 <div class="nav-panel">
425 Next: <a href="#TLS" accesskey="n" rel="next">Configuring remote connections over TLS.</a>, Previous: <a href="#Invoking" accesskey="p" rel="prev">Invoking <code class="command">pwmd</code></a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
426 </div>
427 <h2 class="chapter" id="pwmd-configuration-file-options"><span>5 <code class="command">pwmd</code> configuration file options<a class="copiable-link" href="#pwmd-configuration-file-options"> &para;</a></span></h2>
430 <p>If no configuration file is specified with the <code class="command">pwmd</code> <samp class="option">-f</samp>
431 command line option, <code class="command">pwmd</code> will read <samp class="file">~/.pwmd/config</samp> if it
432 exists, and if not, will use defaults. Blank lines and lines beginning with
433 &lsquo;<samp class="samp">#</samp>&rsquo; are ignored. Some parameters may have data file specific settings by
434 placing them in a file section. A file section is declared by surrounding the
435 filename with braces (i.e., &lsquo;<samp class="samp">[filename]</samp>&rsquo;). Global options may be
436 specified in the <code class="code">global</code> section (e.g., &lsquo;<samp class="samp">[global]</samp>&rsquo;) and are the
437 default options for new or unspecified file sections.
438 </p>
439 <p>A tilde <code class="code">~</code> will be expanded to the home directory of the user starting
440 <code class="command">pwmd</code> when contained in a parameter whose value is a filename.
441 </p>
442 <a class="index-entry-id" id="index-Reloading-the-configuration-file"></a>
443 <p>The configuration file can be reloaded by sending the <em class="emph">SIGHUP</em> signal to
444 a <code class="command">pwmd</code> process. Some security sensitive settings may not be changed
445 until <code class="command">pwmd</code> is stopped then restarted.
446 </p>
447 <a class="index-entry-id" id="index-Global-configuration-options"></a>
448 <p>The following options are only for use in the <code class="code">[global]</code> section:
449 </p>
450 <dl class="table">
451 <dt><a id="index-socket_005fpath"></a><span>&lsquo;<samp class="samp">socket_path = /path/to/socket</samp>&rsquo;<a class="copiable-link" href="#index-socket_005fpath"> &para;</a></span></dt>
452 <dd><p>Listen on the specified socket. The default is <samp class="file">~/.pwmd/socket</samp>.
453 </p>
454 </dd>
455 <dt><a id="index-socket_005fperms"></a><span>&lsquo;<samp class="samp">socket_perms = octal_mode</samp>&rsquo;<a class="copiable-link" href="#index-socket_005fperms"> &para;</a></span></dt>
456 <dd><p>Permissions to set after creating the socket. This will override any
457 <cite class="cite">umask(2)</cite> setting.
458 </p>
459 </dd>
460 <dt><a id="index-backlog"></a><span>&lsquo;<samp class="samp">backlog = integer</samp>&rsquo;<a class="copiable-link" href="#index-backlog"> &para;</a></span></dt>
461 <dd><p>The number of connections to queue. When this limit is reached then new
462 connections will be refused. The default is <code class="code">128</code>.
463 </p>
464 </dd>
465 <dt><a id="index-invoking_005fuser"></a><span>&lsquo;<samp class="samp">invoking_user = [-!]user,[-!]@group,[-!]#SHA-256,&hellip;</samp>&rsquo;<a class="copiable-link" href="#index-invoking_005fuser"> &para;</a></span></dt>
466 <dd><p>This parameter is not to be confused with setuid or setguid upon startup. It&rsquo;s
467 syntax is the same as the <code class="code">allowed</code> parameter except that it is a list of
468 local usernames, group names and <abbr class="acronym">TLS</abbr> fingerprint hashes that may use the
469 <code class="command">XPATH</code>, <code class="command">XPATHATTR</code> and <code class="command">DUMP</code> commands (except when
470 disabled with the <code class="code">disable_list_and_dump</code> option) and also who may modify
471 elements that have no <code class="code">_acl</code> attribute or is not listed in an
472 <code class="code">_acl</code>. It is similar to the system administrator root account but for a
473 data file and element paths (see <a class="pxref" href="#Access-Control">Access Control</a>). The default is specified
474 at compile-time and also by default is the user <code class="code">nobody</code>.
475 </p>
476 </dd>
477 <dt><a id="index-invoking_005ffile"></a><span>&lsquo;<samp class="samp">invoking_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-invoking_005ffile"> &para;</a></span></dt>
478 <dd><p>A file containing one entry per line. An entry has the same syntax as the
479 <code class="code">invoking_user</code> parameter. When both this parameter and the
480 <code class="code">invoking_user</code> parameter are specified then the <code class="code">invoking_user</code>
481 parameter will behave as if the <code class="code">invoking_file</code> entries have been
482 appended to the <code class="code">invoking_user</code> parameter value.
483 </p>
484 </dd>
485 <dt><a id="index-strict_005fopen"></a><span>&lsquo;<samp class="samp">strict_open = boolean</samp>&rsquo;<a class="copiable-link" href="#index-strict_005fopen"> &para;</a></span></dt>
486 <dd><p>When <code class="code">true</code>, disallow creation of a new data file when the current client
487 is not an <code class="code">invoking_user</code>. The default is <code class="code">false</code>.
488 </p>
489 </dd>
490 <dt><a id="index-strict_005fkill"></a><span>&lsquo;<samp class="samp">strict_kill = boolean</samp>&rsquo;<a class="copiable-link" href="#index-strict_005fkill"> &para;</a></span></dt>
491 <dd><p>When <code class="code">false</code>, the <code class="code">KILL</code> command (see <a class="pxref" href="#KILL">Terminating another client.</a>) will allow killing
492 another client that is not of the same <code class="code">UID</code> or <abbr class="acronym">TLS</abbr> fingerprint of
493 the current client and when not an <code class="code">invoking_user</code>. The default us
494 <code class="code">false</code>.
495 </p>
496 </dd>
497 <dt><a id="index-allowed"></a><span>&lsquo;<samp class="samp">allowed = [-!]user,[-!]@group,[+,][-!]#SHA-256,[-!]/path/to/exec[&hellip;]</samp>&rsquo;<a class="copiable-link" href="#index-allowed"> &para;</a></span></dt>
498 <dd><p>A comma separated list of local user names, group names or <abbr class="acronym">TLS</abbr>
499 fingerprint SHA-256 hashes (in the case of a remote client) which are
500 allowed to connect. Groups should be prefixed with a &lsquo;<samp class="samp">@</samp>&rsquo;. When not
501 specified only the user who started <code class="command">pwmd</code> may connect. An entry in
502 the list may be prefixed with a <code class="code">-</code> or <code class="code">!</code> to prevent access. The
503 order of the list is important since a user may be a member of multiple
504 groups, for example.
505 </p>
506 <p>Connections from local clients may also be limited by command name. A command
507 name is the full path to the execuatble on the filesystem. The command check
508 is done after all other user and group name checks. When no command is
509 specified all commands are allowed. This feature is ignored when the
510 connecting client is not of the same <abbr class="acronym">UID</abbr> as the user that invoked
511 <code class="command">pwmd</code>.
512 </p>
513 <p>This parameter may also be specified in a filename section to allow or deny a
514 client to <code class="code">OPEN</code> (see <a class="pxref" href="#OPEN">Opening a data file.</a>) a data file. It also affects the cache
515 commands <code class="code">CLEARCACHE</code> (see <a class="pxref" href="#CLEARCACHE">Removing a cache entry.</a>) and <code class="code">CACHETIMEOUT</code>
516 (see <a class="pxref" href="#CACHETIMEOUT">Setting the cache timeout.</a>). When not specified in a file section, any client
517 allowed to connect may also open any filename provided they can decrypt it.
518 Note that when specified in a file section that any <var class="var">allowed</var> parameter in
519 the <code class="code">global</code> seciton is not considered.
520 </p>
521 <p>The following example would deny all users in group <code class="code">primary</code> but
522 allow <code class="code">username</code> who may be a member of <code class="code">primary</code>. It will also
523 allow any <abbr class="acronym">TLS</abbr> client except for the client with <abbr class="acronym">TLS</abbr>
524 fingerprint hash <code class="code">#ABCDEF</code>. For local connections, the connecting client
525 must be using the /usr/bin/pwmc program:
526 </p>
527 <div class="example">
528 <pre class="example-preformatted">allowed=-@primary,username,+,!#ABCDEF,/usr/bin/pwmc
529 </pre></div>
531 </dd>
532 <dt><a id="index-allowed_005ffile"></a><span>&lsquo;<samp class="samp">allowed_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-allowed_005ffile"> &para;</a></span></dt>
533 <dd><p>A file containing one entry per line. An entry has the same syntax as the
534 <code class="code">allowed</code> parameter except that a line beginning with a semicolon is
535 ignored. When both this parameter and the <code class="code">allowed</code> parameter are
536 specified then the <code class="code">allowed_file</code> entries will be appended to the
537 <code class="code">allowed</code> parameter value.
538 </p>
539 </dd>
540 <dt><a id="index-encrypt_005fto"></a><span>&lsquo;<samp class="samp">encrypt_to = boolean</samp>&rsquo;<a class="copiable-link" href="#index-encrypt_005fto"> &para;</a></span></dt>
541 <dd><p>When <code class="code">true</code> and <code class="command">SAVE</code>&rsquo;ing a data file, allow <code class="command">gpg</code> to
542 append it&rsquo;s configured key to the list of recipients. The default is
543 <code class="code">false</code> meaning that only keys specified with <code class="command">SAVE</code>
544 <samp class="option">--keyid</samp> are recipients.
545 </p>
546 </dd>
547 <dt><a id="index-always_005ftrust"></a><span>&lsquo;<samp class="samp">always_trust = boolean</samp>&rsquo;<a class="copiable-link" href="#index-always_005ftrust"> &para;</a></span></dt>
548 <dd><p>When <code class="code">true</code>, allow encrypting to untrusted recipients or public
549 encryption keys. If you receive an error when <code class="command">SAVE</code>&rsquo;ing stating that
550 the public key is unusable, either enable this option or edit the keys&rsquo; trust
551 value:
552 </p><div class="example">
553 <pre class="example-preformatted">gpg --homedir ~/.pwmd/.gnupg --edit-key &lt;fingerprint&gt;
554 </pre></div>
555 <p>The default is <code class="code">false</code>.
556 </p>
557 </dd>
558 <dt><a id="index-gpg_005fhomedir"></a><span>&lsquo;<samp class="samp">gpg_homedir = path</samp>&rsquo;<a class="copiable-link" href="#index-gpg_005fhomedir"> &para;</a></span></dt>
559 <dd><p>The location where <code class="command">gpg</code> will store its public and private keys and
560 configuration. The default is <samp class="file">HOMEDIR/.gnupg</samp> where <var class="var">HOMEDIR</var> is the
561 default (<samp class="file">~/.pwmd</samp>) or the value specified on the command line with the
562 <samp class="option">--homedir</samp> command line option (see <a class="pxref" href="#Invoking">Invoking <code class="command">pwmd</code></a>). If you want to use
563 your standard <code class="command">gpg</code> keyring then set this to <samp class="file">~/.gnupg</samp>. Note
564 that a new instance of <code class="command">gpg-agent</code> will be started when <em class="emph">not</em>
565 using the standard keyring and that any configuration options for
566 <code class="command">gpg-agent</code> will need to placed in
567 <samp class="file">HOMEDIR/.gnupg/gpg-agent.conf</samp>.
568 </p>
569 </dd>
570 <dt><a id="index-disable_005fmlockall"></a><span>&lsquo;<samp class="samp">disable_mlockall = boolean</samp>&rsquo;<a class="copiable-link" href="#index-disable_005fmlockall"> &para;</a></span></dt>
571 <dd><p>When set to <code class="code">false</code>, <cite class="cite">mlockall(2)</cite> will be called on startup. This
572 will use more physical memory but may also be more secure since no swapping to
573 disk will occur. The default is <var class="var">true</var>. If possible, use an encrypted swap
574 file or partition and leave this set to <var class="var">true</var>.
575 </p>
576 </dd>
577 <dt><a id="index-log_005fpath"></a><span>&lsquo;<samp class="samp">log_path = /path/to/logfile</samp>&rsquo;<a class="copiable-link" href="#index-log_005fpath"> &para;</a></span></dt>
578 <dd><p>Logs informational messages to the specified file. The default is
579 <samp class="file">~/.pwmd/log</samp>.
580 </p>
581 </dd>
582 <dt><a id="index-enable_005flogging"></a><span>&lsquo;<samp class="samp">enable_logging = boolean</samp>&rsquo;<a class="copiable-link" href="#index-enable_005flogging"> &para;</a></span></dt>
583 <dd><p>Enable or disable logging to <var class="var">log_path</var>. The default is <code class="code">false</code>.
584 </p>
585 </dd>
586 <dt><a id="index-log_005fkeepopen"></a><span>&lsquo;<samp class="samp">log_keepopen = boolean</samp>&rsquo;<a class="copiable-link" href="#index-log_005fkeepopen"> &para;</a></span></dt>
587 <dd><p>When set to <code class="code">false</code>, the log file specified with <var class="var">log_path</var> will be
588 closed after writing each line. The default is <code class="code">true</code>.
589 </p>
590 </dd>
591 <dt><a id="index-syslog"></a><span>&lsquo;<samp class="samp">syslog = boolean</samp>&rsquo;<a class="copiable-link" href="#index-syslog"> &para;</a></span></dt>
592 <dd><p>Enable logging to <cite class="cite">syslog(8)</cite> with facility <em class="emph">LOG_DAEMON</em> and priority
593 <em class="emph">LOG_INFO</em>. The default is <code class="code">false</code>.
594 </p>
595 </dd>
596 <dt><a id="index-log_005flevel"></a><span>&lsquo;<samp class="samp">log_level = level</samp>&rsquo;<a class="copiable-link" href="#index-log_005flevel"> &para;</a></span></dt>
597 <dd><p>When <code class="code">0</code>, only connections and errors are logged. When <code class="code">1</code>, data
598 file recipients and signers are logged during <code class="code">OPEN</code> (see <a class="pxref" href="#OPEN">Opening a data file.</a>) and
599 <code class="code">SAVE</code> (see <a class="pxref" href="#SAVE">Saving document changes to disk.</a>). When <code class="code">2</code>, client commands are also logged.
600 The default is <code class="code">0</code>.
601 </p>
602 </dd>
603 <dt><a id="index-kill_005fscd"></a><span>&lsquo;<samp class="samp">kill_scd = boolean</samp>&rsquo;<a class="copiable-link" href="#index-kill_005fscd"> &para;</a></span></dt>
604 <dd><p>Attempt to kill <code class="command">scdaemon</code> after a client disconnects. The default is
605 <code class="code">false</code>.
606 </p>
607 </dd>
608 <dt><a id="index-disable_005flist_005fand_005fdump"></a><span>&lsquo;<samp class="samp">disable_list_and_dump = boolean</samp>&rsquo;<a class="copiable-link" href="#index-disable_005flist_005fand_005fdump"> &para;</a></span></dt>
609 <dd><p>When <code class="code">true</code> the <code class="code">XPATH</code>, <code class="code">XPATHATTR</code>, <code class="code">LIST</code> and
610 <code class="code">DUMP</code> protocol commands (see <a class="pxref" href="#Commands">Protocol commands and their syntax</a>) will be disabled.
611 </p>
612 </dd>
613 <dt><a id="index-cache_005fpush"></a><span>&lsquo;<samp class="samp">cache_push = file1,file2</samp>&rsquo;<a class="copiable-link" href="#index-cache_005fpush"> &para;</a></span></dt>
614 <dd><p>A comma separated list of filenames to be cached upon startup. <code class="command">pwmd</code>
615 will prompt for the passphrase for each file unless specified with
616 <var class="var">passphrase_file</var> parameter in a matching file section.
617 </p>
618 </dd>
619 <dt><a id="index-priority"></a><span>&lsquo;<samp class="samp">priority = integer</samp>&rsquo;<a class="copiable-link" href="#index-priority"> &para;</a></span></dt>
620 <dd><p>The priority or niceness of the server. The default is inherited from the
621 parent process.
622 </p>
623 </dd>
624 <dt><a id="index-lock_005ftimeout"></a><span>&lsquo;<samp class="samp">lock_timeout = integer</samp>&rsquo;<a class="copiable-link" href="#index-lock_005ftimeout"> &para;</a></span></dt>
625 <dd><p>The default timeout in tenths of a second before giving up while waiting for a
626 file lock and returning an error. The default is <code class="code">50</code>.
627 </p>
628 </dd>
629 </dl>
631 <a class="index-entry-id" id="index-Data-file-configuration-options"></a>
632 <p>The following options are defaults for new files when specified in the
633 &lsquo;<samp class="samp">global</samp>&rsquo; section. When placed in a data file section they are options
634 specific to that data file only.
635 </p>
636 <dl class="table">
637 <dt><a id="index-require_005fsave_005fkey"></a><span>&lsquo;<samp class="samp">require_save_key = boolean</samp>&rsquo;<a class="copiable-link" href="#index-require_005fsave_005fkey"> &para;</a></span></dt>
638 <dd><p>Require the passphrase needed for signing before writing changes of the
639 document to disk regardless of the key cache status. The default is
640 <code class="code">true</code>. This option compliments <code class="command">gpg-agent</code> option
641 <samp class="option">--ignore-cache-for-signing</samp> and is used as a fail-safe.
642 </p>
643 </dd>
644 <dt><a id="index-backup"></a><span>&lsquo;<samp class="samp">backup = boolean</samp>&rsquo;<a class="copiable-link" href="#index-backup"> &para;</a></span></dt>
645 <dd><p>Whether to create a backup of the data file when saving. The backup filename
646 has the <samp class="file">.backup</samp> extension appended to the opened file. The default is
647 <code class="code">true</code>.
648 </p>
649 </dd>
650 <dt><a id="index-cache_005ftimeout"></a><span>&lsquo;<samp class="samp">cache_timeout = seconds</samp>&rsquo;<a class="copiable-link" href="#index-cache_005ftimeout"> &para;</a></span></dt>
651 <dd><p>The number of seconds to keep the cache entry for this file. If <code class="code">-1</code>, the
652 cache entry is kept forever. If <code class="code">0</code>, each time an encrypted file is
653 <code class="code">OPEN</code>ed (see <a class="pxref" href="#OPEN">Opening a data file.</a>) a passphrase will be required. The default
654 is <code class="code">600</code> or 10 minutes.
655 </p>
656 </dd>
657 <dt><a id="index-passphrase_005ffile"></a><span>&lsquo;<samp class="samp">passphrase_file = /path/to/filename</samp>&rsquo;<a class="copiable-link" href="#index-passphrase_005ffile"> &para;</a></span></dt>
658 <dd><p>Obtain the passphrase to open the data file from <var class="var">filename</var>. If specified
659 in the &lsquo;<samp class="samp">global</samp>&rsquo; section then the <var class="var">passphrase_file</var> is a default for
660 all data files. Note that if a client changes the passphrase for this data
661 file then the <var class="var">passphrase_file</var> will need to be updated with the new
662 passphrase.
663 </p>
664 </dd>
665 <dt><a id="index-recursion_005fdepth"></a><span>&lsquo;<samp class="samp">recursion_depth = integer</samp>&rsquo;<a class="copiable-link" href="#index-recursion_005fdepth"> &para;</a></span></dt>
666 <dd><p>The maximum number of times to resolve a <code class="code">_target</code> attribute for an
667 element in an element path (see <a class="pxref" href="#Target-Attribute">The <code class="code">target</code> attribute</a>). An error is returned
668 when this value is exceeded. The default is <code class="code">100</code> but can be disabled by
669 setting to <code class="code">0</code> (<em class="emph">not recommended</em>).
670 </p>
671 </dd>
672 <dt>&lsquo;<samp class="samp">allowed = [-]user,[-]@group,[!]#TLSFINGERPRINT,&hellip;</samp>&rsquo;</dt>
673 <dd><p>Same parameter value as the <code class="code">allowed</code> parameter mentioned above in
674 the &lsquo;<samp class="samp">[global]</samp>&rsquo; section but grants or denies a client from opening a
675 specific data file. The default is to allow any client that is allowed to
676 connect.
677 </p>
678 </dd>
679 </dl>
681 <hr>
682 </div>
683 <div class="chapter-level-extent" id="TLS">
684 <div class="nav-panel">
686 Next: <a href="#Pinentry" accesskey="n" rel="next">Pinentry configuration</a>, Previous: <a href="#Configuration" accesskey="p" rel="prev"><code class="command">pwmd</code> configuration file options</a>, Up: <a href="#Configuration" accesskey="u" rel="up"><code class="command">pwmd</code> configuration file options</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
687 </div>
688 <h2 class="chapter" id="Configuring-remote-connections-over-TLS_002e"><span>6 Configuring remote connections over TLS.<a class="copiable-link" href="#Configuring-remote-connections-over-TLS_002e"> &para;</a></span></h2>
689 <p>In addition to connecting to <code class="command">pwmd</code> via a Unix Domain Socket, remote
690 connections can also be made to <code class="command">pwmd</code> over <abbr class="acronym">TLS</abbr>.
691 Authentication is done by using X.509 client certificates that are signed with
692 the same Certificate Authority (CA) as the server certificate.
693 </p>
694 <p>The CA certificate is expected to be found in
695 <samp class="file">~/.pwmd/ca-cert.pem</samp> while the <code class="command">pwmd</code> server certificate and key
696 file should be put in <samp class="file">~/.pwmd/server-cert.pem</samp> and
697 <samp class="file">~/.pwmd/server-key.pem</samp>, respectively.
698 </p>
699 <p>See the documentation of <code class="command">certtool</code> or <code class="command">openssl</code> for details
700 about creating self-signed certificates.
701 </p>
702 <p>The following <abbr class="acronym">TLS</abbr> configuration options are available:
703 </p>
704 <dl class="table">
705 <dt><a id="index-enable_005ftcp"></a><span>&lsquo;<samp class="samp">enable_tcp = boolean</samp>&rsquo;<a class="copiable-link" href="#index-enable_005ftcp"> &para;</a></span></dt>
706 <dd><p>Whether to enable <abbr class="acronym">TCP</abbr>/<abbr class="acronym">TLS</abbr> server support. If enabled, both <abbr class="acronym">TCP</abbr> and the local
707 unix domain socket will listen for connections. The default is
708 <code class="code">false</code>.
709 </p>
710 </dd>
711 <dt><a id="index-tcp_005fport"></a><span>&lsquo;<samp class="samp">tcp_port = integer</samp>&rsquo;<a class="copiable-link" href="#index-tcp_005fport"> &para;</a></span></dt>
712 <dd><p>The <abbr class="acronym">TCP</abbr> port to listen on when <var class="var">enable_tcp</var> is <code class="code">true</code>. The default is
713 <code class="code">6466</code>.
714 </p>
715 </dd>
716 <dt><a id="index-tcp_005fbind"></a><span>&lsquo;<samp class="samp">tcp_bind = string</samp>&rsquo;<a class="copiable-link" href="#index-tcp_005fbind"> &para;</a></span></dt>
717 <dd><p>The internet protocol to listen with. Must be one of <code class="code">ipv4</code>, <code class="code">ipv6</code>
718 or <code class="code">any</code> to listen for both IPv4 and IPv6 connections. The default is
719 <code class="code">any</code>.
720 </p>
721 </dd>
722 <dt><a id="index-tcp_005finterface"></a><span>&lsquo;<samp class="samp">tcp_interface = string</samp>&rsquo;<a class="copiable-link" href="#index-tcp_005finterface"> &para;</a></span></dt>
723 <dd><p>Only useful if running as root.
724 </p>
725 </dd>
726 <dt><a id="index-tls_005ftimeout"></a><span>&lsquo;<samp class="samp">tls_timeout = seconds</samp>&rsquo;<a class="copiable-link" href="#index-tls_005ftimeout"> &para;</a></span></dt>
727 <dd><p>The number of seconds to wait for a read() or write() call on a
728 <abbr class="acronym">TLS</abbr> client file descriptor to complete before returning an
729 error. The default is <var class="var">300</var>.
730 </p>
731 </dd>
732 <dt><a id="index-keepalive_005finterval"></a><span>&lsquo;<samp class="samp">keepalive_interval = seconds</samp>&rsquo;<a class="copiable-link" href="#index-keepalive_005finterval"> &para;</a></span></dt>
733 <dd><p>Send a keepalive status message to an idle remote client. An idle
734 client is one that is not in a command. The purpose of this status
735 message is to disconnect a hung remote client and release any file mutex
736 locks so another client may open the same data file. The default is <code class="code">60</code>.
737 </p>
738 </dd>
739 <dt><a id="index-tcp_005frequire_005fkey"></a><span>&lsquo;<samp class="samp">tcp_require_key = boolean</samp>&rsquo;<a class="copiable-link" href="#index-tcp_005frequire_005fkey"> &para;</a></span></dt>
740 <dd><p>When <code class="code">true</code>, require the remote client to provide the passphrase to open
741 a data file even if the file is cached. This option is a default for all
742 files when specified in the &lsquo;<samp class="samp">[global]</samp>&rsquo; section. The default is
743 <code class="code">false</code>.
744 </p>
745 </dd>
746 <dt><a id="index-tls_005fcipher_005fsuite"></a><span>&lsquo;<samp class="samp">tls_cipher_suite = string</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fcipher_005fsuite"> &para;</a></span></dt>
747 <dd><p>The GnuTLS cipher suite and protocol to use. See the GnuTLS documentation for
748 information about the format of this string. The default is
749 <code class="code">SECURE256:SECURE192:SECURE128:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-AES-128-CBC:-AES-256-CBC</code>.
750 </p>
751 </dd>
752 <dt><a id="index-tls_005fdh_005fparams_005ffile"></a><span>&lsquo;<samp class="samp">tls_dh_params_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fdh_005fparams_005ffile"> &para;</a></span></dt>
753 <dd><p>The PEM encoded filename containing DH parameters. If not specified
754 then DH algorithms will not be available to the client. See the
755 <code class="command">openssl dhparam</code> or <code class="command">certtool</code> manual pages for details about
756 generating this file.
757 </p>
758 <p>Note that SIGHUP will not reload this file once <abbr class="acronym">TLS</abbr> support has been enabled.
759 You will need to restart <code class="command">pwmd</code> for changes to take effect.
760 </p>
761 </dd>
762 <dt><a id="index-tls_005fuse_005fcrl"></a><span>&lsquo;<samp class="samp">tls_use_crl = boolean</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fuse_005fcrl"> &para;</a></span></dt>
763 <dd><p>When <code class="code">true</code>, enable the use of <samp class="option">tls_crl_file</samp>. The default is
764 <code class="code">false</code>.
765 </p>
766 </dd>
767 <dt><a id="index-tls_005fcrl_005ffile"></a><span>&lsquo;<samp class="samp">tls_crl_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fcrl_005ffile"> &para;</a></span></dt>
768 <dd><p>This file is an X.509 Certificate Revocation List (<abbr class="acronym">CRL</abbr>) and can be
769 used to deny clients by adding client certificates to it. <code class="command">pwmd</code> will
770 need to be restarted to recognize any changes to this file. When not
771 specified the default of <samp class="file">~/.pwmd/crl.pem</samp> will be used when
772 <samp class="option">tls_use_crl</samp> is <code class="code">true</code>.
773 </p>
774 </dd>
775 <dt><a id="index-tls_005fca_005ffile"></a><span>&lsquo;<samp class="samp">tls_ca_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fca_005ffile"> &para;</a></span></dt>
776 <dd><p>The filename of the <abbr class="acronym">CA</abbr> certificate to use. When not specified the
777 default of <samp class="file">~/.pwmd/ca-cert.pem</samp> will be used.
778 </p>
779 </dd>
780 <dt><a id="index-tls_005fserver_005fcert_005ffile"></a><span>&lsquo;<samp class="samp">tls_server_cert_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fserver_005fcert_005ffile"> &para;</a></span></dt>
781 <dd><p>The filename of the server certificate to use. When not specified the default
782 of <samp class="file">~/.pwmd/server-cert.pem</samp> will be used.
783 </p>
784 </dd>
785 <dt><a id="index-tls_005fserver_005fkey_005ffile"></a><span>&lsquo;<samp class="samp">tls_server_key_file = filename</samp>&rsquo;<a class="copiable-link" href="#index-tls_005fserver_005fkey_005ffile"> &para;</a></span></dt>
786 <dd><p>The key filename of the server certificate to use. When not specified the
787 default of <samp class="file">~/.pwmd/server-key.pem</samp> will be used.
788 </p>
789 </dd>
790 </dl>
792 <hr>
793 </div>
794 <div class="chapter-level-extent" id="Pinentry">
795 <div class="nav-panel">
797 Next: <a href="#Commands" accesskey="n" rel="next">Protocol commands and their syntax</a>, Previous: <a href="#TLS" accesskey="p" rel="prev">Configuring remote connections over TLS.</a>, Up: <a href="#Configuration" accesskey="u" rel="up"><code class="command">pwmd</code> configuration file options</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
798 </div>
799 <h2 class="chapter" id="Pinentry-configuration"><span>7 Pinentry configuration<a class="copiable-link" href="#Pinentry-configuration"> &para;</a></span></h2>
801 <p>The <code class="command">pinentry</code> program is used to prompt the user for passphrase
802 input or as a confirmation dialog; it needs to know where to prompt for
803 the input; from a terminal or an X11 display.
804 </p>
805 <p>It is the responsibility of the client to tell <code class="command">pinentry</code> about the
806 terminal or X11 display before requiring the input. This is done with the
807 <code class="command">OPTION</code> command (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>) to either set or unset needed
808 <code class="command">pwmd</code> environment variables and by using the
809 <code class="command">gpg-connect-agent</code> program. Please read it&rsquo;s documentation about the
810 <em class="emph">UPDATESTARTUPTTY</em> command.
811 </p>
812 <hr>
813 </div>
814 <div class="chapter-level-extent" id="Commands">
815 <div class="nav-panel">
817 Next: <a href="#Bulk-Commands" accesskey="n" rel="next">Running multiple commands in sequence</a>, Previous: <a href="#Pinentry" accesskey="p" rel="prev">Pinentry configuration</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
818 </div>
819 <h2 class="chapter" id="Protocol-commands-and-their-syntax"><span>8 Protocol commands and their syntax<a class="copiable-link" href="#Protocol-commands-and-their-syntax"> &para;</a></span></h2>
820 <ul class="mini-toc">
821 <li><a href="#ATTR" accesskey="1">Modifying element attributes.</a></li>
822 <li><a href="#BULK" accesskey="2">Run a series of commands in sequence.</a></li>
823 <li><a href="#CACHETIMEOUT" accesskey="3">Setting the cache timeout.</a></li>
824 <li><a href="#CLEARCACHE" accesskey="4">Removing a cache entry.</a></li>
825 <li><a href="#COPY" accesskey="5">Copying an element.</a></li>
826 <li><a href="#DELETE" accesskey="6">Deleting an element.</a></li>
827 <li><a href="#DELETEKEY" accesskey="7">Deleting a key from the key ring.</a></li>
828 <li><a href="#DUMP" accesskey="8">Showing the XML document.</a></li>
829 <li><a href="#GENKEY" accesskey="9">Generating a new key.</a></li>
830 <li><a href="#GET">Getting the content of an element.</a></li>
831 <li><a href="#GETCONFIG">Obtaining a configuration value.</a></li>
832 <li><a href="#GETINFO">Obtaining server and client information.</a></li>
833 <li><a href="#HELP">Showing available commands.</a></li>
834 <li><a href="#IMPORT">Creating elements from XML.</a></li>
835 <li><a href="#ISCACHED">Testing cache status.</a></li>
836 <li><a href="#KEYINFO">Showing keys used for the current data file.</a></li>
837 <li><a href="#KILL">Terminating another client.</a></li>
838 <li><a href="#LIST">Showing document elements.</a></li>
839 <li><a href="#LISTKEYS">Listing keys in the key ring.</a></li>
840 <li><a href="#LOCK">Locking the current data file.</a></li>
841 <li><a href="#LS">Showing available data files.</a></li>
842 <li><a href="#MOVE">Moving an element.</a></li>
843 <li><a href="#NOP">Testing the connection.</a></li>
844 <li><a href="#OPEN">Opening a data file.</a></li>
845 <li><a href="#OPTION">Setting various client parameters.</a></li>
846 <li><a href="#PASSWD">Changing the passphrase for a key.</a></li>
847 <li><a href="#REALPATH">Resolving an element.</a></li>
848 <li><a href="#RENAME">Renaming an element.</a></li>
849 <li><a href="#RESET">Resetting the client state.</a></li>
850 <li><a href="#SAVE">Saving document changes to disk.</a></li>
851 <li><a href="#STORE">Modifying the content of an element.</a></li>
852 <li><a href="#UNLOCK">Removing a data file lock.</a></li>
853 <li><a href="#XPATH">Modifying more than one element.</a></li>
854 <li><a href="#XPATHATTR">Modifying more than one element&rsquo;s attributes.</a></li>
855 </ul>
856 <hr>
857 <div class="section-level-extent" id="ATTR">
858 <div class="nav-panel">
860 Next: <a href="#BULK" accesskey="n" rel="next">Run a series of commands in sequence.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
861 </div>
862 <h3 class="section" id="Modifying-element-attributes_002e"><span>8.1 Modifying element attributes.<a class="copiable-link" href="#Modifying-element-attributes_002e"> &para;</a></span></h3>
863 <a class="index-entry-id" id="index-ATTR-command"></a>
864 <p>Syntax:
865 </p><div class="example">
866 <pre class="example-preformatted">ATTR [--inquire] SET|GET|DELETE|LIST [&lt;attribute&gt;] element[&lt;TAB&gt;child[..]] ..
867 </pre></div>
869 <dl class="table">
870 <dt>ATTR SET attribute element[&lt;TAB&gt;child[..]] [value]</dt>
871 <dd><p>Stores or updates an <var class="var">attribute</var> name and optional <var class="var">value</var> of an
872 element. When no <var class="var">value</var> is specified any existing value will be removed.
873 <br><br>
874 </p></dd>
875 <dt>ATTR DELETE attribute element[&lt;TAB&gt;child[..]]</dt>
876 <dd><p>Removes an attribute from an element. If <var class="var">attribute</var> is <code class="code">_name</code>
877 or <code class="code">target</code> an error is returned. Use the <code class="command">DELETE</code> command
878 (see <a class="pxref" href="#DELETE">Deleting an element.</a>) instead.
879 <br><br>
880 </p></dd>
881 <dt>ATTR LIST element[&lt;TAB&gt;child[..]]</dt>
882 <dd><p>Retrieves a newline separated list of attributes names and values
883 from the specified element. Each attribute name and value is space delimited.
884 <br><br>
885 </p></dd>
886 <dt>ATTR GET attribute element[&lt;TAB&gt;child[..]]</dt>
887 <dd><p>Retrieves the value of an <var class="var">attribute</var> from an element.
888 </p></dd>
889 </dl>
890 <br><br>
891 <p>When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
892 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
893 <br><br>
894 See <a class="xref" href="#Target-Attribute">The <code class="code">target</code> attribute</a>, for details about this special attribute and also
895 see <a class="pxref" href="#Other-Attributes">Other special attributes</a> for other attributes that are handled specially
896 by <code class="command">pwmd</code>.
897 </p>
899 <hr>
900 </div>
901 <div class="section-level-extent" id="BULK">
902 <div class="nav-panel">
904 Next: <a href="#CACHETIMEOUT" accesskey="n" rel="next">Setting the cache timeout.</a>, Previous: <a href="#ATTR" accesskey="p" rel="prev">Modifying element attributes.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
905 </div>
906 <h3 class="section" id="Run-a-series-of-commands-in-sequence_002e"><span>8.2 Run a series of commands in sequence.<a class="copiable-link" href="#Run-a-series-of-commands-in-sequence_002e"> &para;</a></span></h3>
907 <a class="index-entry-id" id="index-BULK-command"></a>
908 <p>Syntax:
909 </p><div class="example">
910 <pre class="example-preformatted">BULK [--inquire]
911 </pre></div>
913 <p>Parses a semi-canonical s-expression representing a series of protocol
914 commands to be run in sequence (see <a class="pxref" href="#Bulk-Commands">Running multiple commands in sequence</a>). Returns a canonical
915 s-expression containing each commands id, return value and result data
916 (if any).
917 <br><br>
918 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
919 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
920 </p>
922 <hr>
923 </div>
924 <div class="section-level-extent" id="CACHETIMEOUT">
925 <div class="nav-panel">
927 Next: <a href="#CLEARCACHE" accesskey="n" rel="next">Removing a cache entry.</a>, Previous: <a href="#BULK" accesskey="p" rel="prev">Run a series of commands in sequence.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
928 </div>
929 <h3 class="section" id="Setting-the-cache-timeout_002e"><span>8.3 Setting the cache timeout.<a class="copiable-link" href="#Setting-the-cache-timeout_002e"> &para;</a></span></h3>
930 <a class="index-entry-id" id="index-CACHETIMEOUT-command"></a>
931 <p>Syntax:
932 </p><div class="example">
933 <pre class="example-preformatted">CACHETIMEOUT &lt;seconds&gt;
934 </pre></div>
936 <p>The time in <var class="var">seconds</var> until the currently opened data file will be
937 removed from the cache. <code class="code">-1</code> will keep the cache entry forever,
938 <code class="code">0</code> will require the passphrase for each <code class="code">OPEN</code> command
939 (see <a class="pxref" href="#OPEN">Opening a data file.</a>) or <code class="code">SAVE</code> (see <a class="pxref" href="#SAVE">Saving document changes to disk.</a>) command. See <a class="xref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>,
940 and the <code class="code">cache_timeout</code> parameter.
941 </p>
943 <hr>
944 </div>
945 <div class="section-level-extent" id="CLEARCACHE">
946 <div class="nav-panel">
948 Next: <a href="#COPY" accesskey="n" rel="next">Copying an element.</a>, Previous: <a href="#CACHETIMEOUT" accesskey="p" rel="prev">Setting the cache timeout.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
949 </div>
950 <h3 class="section" id="Removing-a-cache-entry_002e"><span>8.4 Removing a cache entry.<a class="copiable-link" href="#Removing-a-cache-entry_002e"> &para;</a></span></h3>
951 <a class="index-entry-id" id="index-CLEARCACHE-command"></a>
952 <p>Syntax:
953 </p><div class="example">
954 <pre class="example-preformatted">CLEARCACHE [&lt;filename&gt;]
955 </pre></div>
957 <p>Clears a file cache entry for all or the specified <var class="var">filename</var>. Note that
958 this will also clear any <code class="command">gpg-agent</code> cached keys which may cause
959 problems if another data file shares the same keys as <var class="var">filename</var>.
960 <br><br>
961 When clearing all cache entries a permissions test is done against the
962 current client based on the <var class="var">allowed</var> configuration parameter in a
963 <var class="var">filename</var> section. Both a cache entry may be cleared and an error
964 returned depending on cached data files and client permissions.
965 </p>
967 <hr>
968 </div>
969 <div class="section-level-extent" id="COPY">
970 <div class="nav-panel">
972 Next: <a href="#DELETE" accesskey="n" rel="next">Deleting an element.</a>, Previous: <a href="#CLEARCACHE" accesskey="p" rel="prev">Removing a cache entry.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
973 </div>
974 <h3 class="section" id="Copying-an-element_002e"><span>8.5 Copying an element.<a class="copiable-link" href="#Copying-an-element_002e"> &para;</a></span></h3>
975 <a class="index-entry-id" id="index-COPY-command"></a>
976 <p>Syntax:
977 </p><div class="example">
978 <pre class="example-preformatted">COPY [--inquire] source[&lt;TAB&gt;child[..]] dest[&lt;TAB&gt;child[..]]
979 </pre></div>
981 <p>Copies the entire element tree starting from the child node of the source
982 element, to the destination element path. If the destination element path
983 does not exist then it will be created; otherwise it is overwritten.
984 <br><br>
985 Note that attributes from the source element are merged into the
986 destination element when the destination element path exists. When an
987 attribute of the same name exists in both the source and destination
988 elements then the destination attribute will be updated to the source
989 attribute value.
990 <br><br>
991 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
992 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
993 </p>
995 <hr>
996 </div>
997 <div class="section-level-extent" id="DELETE">
998 <div class="nav-panel">
1000 Next: <a href="#DELETEKEY" accesskey="n" rel="next">Deleting a key from the key ring.</a>, Previous: <a href="#COPY" accesskey="p" rel="prev">Copying an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1001 </div>
1002 <h3 class="section" id="Deleting-an-element_002e"><span>8.6 Deleting an element.<a class="copiable-link" href="#Deleting-an-element_002e"> &para;</a></span></h3>
1003 <a class="index-entry-id" id="index-DELETE-command"></a>
1004 <p>Syntax:
1005 </p><div class="example">
1006 <pre class="example-preformatted">DELETE [--inquire] element[&lt;TAB&gt;child[..]]
1007 </pre></div>
1009 <p>Removes the specified element path and all of its children. This may break
1010 an element with a <code class="code">target</code> attribute (see <a class="pxref" href="#Target-Attribute">The <code class="code">target</code> attribute</a>) that
1011 refers to this element or any of its children.
1012 <br><br>
1013 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1014 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1015 </p>
1017 <hr>
1018 </div>
1019 <div class="section-level-extent" id="DELETEKEY">
1020 <div class="nav-panel">
1022 Next: <a href="#DUMP" accesskey="n" rel="next">Showing the XML document.</a>, Previous: <a href="#DELETE" accesskey="p" rel="prev">Deleting an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1023 </div>
1024 <h3 class="section" id="Deleting-a-key-from-the-key-ring_002e"><span>8.7 Deleting a key from the key ring.<a class="copiable-link" href="#Deleting-a-key-from-the-key-ring_002e"> &para;</a></span></h3>
1025 <a class="index-entry-id" id="index-DELETEKEY-command"></a>
1026 <p>Syntax:
1027 </p><div class="example">
1028 <pre class="example-preformatted">DELETEKEY &lt;keyid&gt;
1029 </pre></div>
1031 <p>Deletes the public and secret key associated with key <var class="var">keyid</var> from the
1032 keyring. The <var class="var">keyid</var> must be one associated with the currently opened
1033 data file.
1034 Note that no confirmation occurs. Also note that when the key is deleted,
1035 the current or other data files using this key will no longer be able to be
1036 opened.
1037 </p>
1039 <hr>
1040 </div>
1041 <div class="section-level-extent" id="DUMP">
1042 <div class="nav-panel">
1044 Next: <a href="#GENKEY" accesskey="n" rel="next">Generating a new key.</a>, Previous: <a href="#DELETEKEY" accesskey="p" rel="prev">Deleting a key from the key ring.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1045 </div>
1046 <h3 class="section" id="Showing-the-XML-document_002e"><span>8.8 Showing the XML document.<a class="copiable-link" href="#Showing-the-XML-document_002e"> &para;</a></span></h3>
1047 <a class="index-entry-id" id="index-DUMP-command"></a>
1048 <p>Syntax:
1049 </p><div class="example">
1050 <pre class="example-preformatted">DUMP
1051 </pre></div>
1053 <p>Shows the in memory <abbr class="abbr">XML</abbr> document with indenting. See <a class="xref" href="#XPATH">Modifying more than one element.</a>, for
1054 dumping a specific node.
1055 </p>
1057 <hr>
1058 </div>
1059 <div class="section-level-extent" id="GENKEY">
1060 <div class="nav-panel">
1062 Next: <a href="#GET" accesskey="n" rel="next">Getting the content of an element.</a>, Previous: <a href="#DUMP" accesskey="p" rel="prev">Showing the XML document.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1063 </div>
1064 <h3 class="section" id="Generating-a-new-key_002e"><span>8.9 Generating a new key.<a class="copiable-link" href="#Generating-a-new-key_002e"> &para;</a></span></h3>
1065 <a class="index-entry-id" id="index-GENKEY-command"></a>
1066 <p>Syntax:
1067 </p><div class="example">
1068 <pre class="example-preformatted">GENKEY --subkey-of=fpr | --userid=&quot;str&quot; [--no-expire | --expire=N] [--algo=&quot;str&quot;] [--no-passphrase] [--usage=&quot;default|sign|encrypt&quot;]
1069 </pre></div>
1071 <p>Generates a new key based on option arguments. One of
1072 <samp class="option">--subkey-of</samp> or <samp class="option">--userid</samp> is
1073 required. The <samp class="option">--subkey-of</samp> option will generate a subkey for the key
1074 of the specified fingerprint.
1075 <br><br>
1076 Note that this may take a long time to complete especially if you do not
1077 have a hardware RNG. There are software RNG&rsquo;s that will speed this up
1078 but are also not as secure.
1079 </p>
1081 <hr>
1082 </div>
1083 <div class="section-level-extent" id="GET">
1084 <div class="nav-panel">
1086 Next: <a href="#GETCONFIG" accesskey="n" rel="next">Obtaining a configuration value.</a>, Previous: <a href="#GENKEY" accesskey="p" rel="prev">Generating a new key.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1087 </div>
1088 <h3 class="section" id="Getting-the-content-of-an-element_002e"><span>8.10 Getting the content of an element.<a class="copiable-link" href="#Getting-the-content-of-an-element_002e"> &para;</a></span></h3>
1089 <a class="index-entry-id" id="index-GET-command"></a>
1090 <p>Syntax:
1091 </p><div class="example">
1092 <pre class="example-preformatted">GET [--inquire] element[&lt;TAB&gt;child[..]]
1093 </pre></div>
1095 <p>Retrieves the content of the specified element. The content is returned
1096 with a data response.
1097 <br><br>
1098 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1099 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1100 </p>
1102 <hr>
1103 </div>
1104 <div class="section-level-extent" id="GETCONFIG">
1105 <div class="nav-panel">
1107 Next: <a href="#GETINFO" accesskey="n" rel="next">Obtaining server and client information.</a>, Previous: <a href="#GET" accesskey="p" rel="prev">Getting the content of an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1108 </div>
1109 <h3 class="section" id="Obtaining-a-configuration-value_002e"><span>8.11 Obtaining a configuration value.<a class="copiable-link" href="#Obtaining-a-configuration-value_002e"> &para;</a></span></h3>
1110 <a class="index-entry-id" id="index-GETCONFIG-command"></a>
1111 <p>Syntax:
1112 </p><div class="example">
1113 <pre class="example-preformatted">GETCONFIG [filename] &lt;parameter&gt;
1114 </pre></div>
1116 <p>Returns the value of a <code class="command">pwmd</code> configuration <var class="var">parameter</var> with a
1117 data response. If no file has been opened then the value for <var class="var">filename</var>
1118 or the default from the <var class="var">global</var> section will be returned. If a file
1119 has been opened and no <var class="var">filename</var> is specified, the value previously
1120 set with the <code class="code">OPTION</code> command (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>) will be returned.
1121 </p>
1123 <hr>
1124 </div>
1125 <div class="section-level-extent" id="GETINFO">
1126 <div class="nav-panel">
1128 Next: <a href="#HELP" accesskey="n" rel="next">Showing available commands.</a>, Previous: <a href="#GETCONFIG" accesskey="p" rel="prev">Obtaining a configuration value.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1129 </div>
1130 <h3 class="section" id="Obtaining-server-and-client-information_002e"><span>8.12 Obtaining server and client information.<a class="copiable-link" href="#Obtaining-server-and-client-information_002e"> &para;</a></span></h3>
1131 <a class="index-entry-id" id="index-GETINFO-command"></a>
1132 <p>Syntax:
1133 </p><div class="example">
1134 <pre class="example-preformatted">GETINFO [--data] [--verbose] CACHE | CLIENTS | PID | USER | LAST_ERROR | VERSION
1135 </pre></div>
1137 <p>Get server and other information. The information is returned via a status
1138 message (see <a class="pxref" href="#Status-Messages">Status messages and their meanings</a>) unless otherwise noted or <samp class="option">--data</samp>
1139 is specified.
1140 <br><br>
1141 <var class="var">CACHE</var> returns the number of cached documents.
1142 <br><br>
1143 <var class="var">CLIENTS</var> returns the number of
1144 connected clients via a status message or a list of connected clients when
1145 the <samp class="option">--verbose</samp> parameter is used (implies <samp class="option">--data</samp>). A
1146 verbose line of a client list contains
1147 space delimited
1148 fields: the thread ID, client name, opened file (<code class="code">/</code> if none opened),
1149 IP address if remote, file lock status, whether the current client is self
1150 or not, client state (see below),
1151 user ID or TLS fingerprint of the connected client, username if the
1152 client is a local one else <code class="code">-</code>, and finally the time stamp of when the
1153 client connected.
1154 <br><br>
1155 Client state <code class="code">0</code> is an unknown client state, state <code class="code">1</code> indicates
1156 the client has connected but hasn&rsquo;t completed initializing, state <code class="code">2</code>
1157 indicates that the client is idle, state <code class="code">3</code> means the
1158 client is in a command and state <code class="code">4</code> means the client is disconnecting.
1159 <br><br>
1160 <var class="var">PID</var> returns the process ID number of the server via a data response.
1161 <br><br>
1162 <var class="var">VERSION</var> returns the server version number and compile-time features
1163 via a data response with each being space delimited.
1164 <br><br>
1165 <var class="var">LAST_ERROR</var> returns a detailed description of the last failed command
1166 via a data response, when available.
1167 <br><br>
1168 <var class="var">USER</var> returns the username or <abbr class="abbr">TLS</abbr> hash of the connected client
1169 via a data response.
1170 </p>
1172 <hr>
1173 </div>
1174 <div class="section-level-extent" id="HELP">
1175 <div class="nav-panel">
1177 Next: <a href="#IMPORT" accesskey="n" rel="next">Creating elements from XML.</a>, Previous: <a href="#GETINFO" accesskey="p" rel="prev">Obtaining server and client information.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1178 </div>
1179 <h3 class="section" id="Showing-available-commands_002e"><span>8.13 Showing available commands.<a class="copiable-link" href="#Showing-available-commands_002e"> &para;</a></span></h3>
1180 <a class="index-entry-id" id="index-HELP-command"></a>
1181 <p>Syntax:
1182 </p><div class="example">
1183 <pre class="example-preformatted">HELP [--html] [&lt;COMMAND&gt;]
1184 </pre></div>
1186 <p>Show available commands or command specific help text.
1187 <br><br>
1188 The <samp class="option">--html</samp> option will output the help text in HTML format.
1189 </p>
1191 <hr>
1192 </div>
1193 <div class="section-level-extent" id="IMPORT">
1194 <div class="nav-panel">
1196 Next: <a href="#ISCACHED" accesskey="n" rel="next">Testing cache status.</a>, Previous: <a href="#HELP" accesskey="p" rel="prev">Showing available commands.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1197 </div>
1198 <h3 class="section" id="Creating-elements-from-XML_002e"><span>8.14 Creating elements from XML.<a class="copiable-link" href="#Creating-elements-from-XML_002e"> &para;</a></span></h3>
1199 <a class="index-entry-id" id="index-IMPORT-command"></a>
1200 <p>Syntax:
1201 </p><div class="example">
1202 <pre class="example-preformatted">IMPORT [--root=element[&lt;TAB&gt;child[..]]]
1203 </pre></div>
1205 <p>This command uses a server <em class="emph">INQUIRE</em> to retrieve data from the client.
1206 <br><br>
1207 Like the <code class="code">STORE</code> command (see <a class="pxref" href="#STORE">Modifying the content of an element.</a>), but the <var class="var">content</var>
1208 argument is raw <abbr class="abbr">XML</abbr> data. The content is created as a child of
1209 the element path specified with the <samp class="option">--root</samp> option or at the
1210 document root when not specified. Existing elements of the same name will
1211 be overwritten.
1212 <br><br>
1213 The content must begin with an <abbr class="abbr">XML</abbr> element node. See <a class="xref" href="#Introduction">Overview of <code class="command">pwmd</code></a>,
1214 for details.
1215 </p>
1217 <hr>
1218 </div>
1219 <div class="section-level-extent" id="ISCACHED">
1220 <div class="nav-panel">
1222 Next: <a href="#KEYINFO" accesskey="n" rel="next">Showing keys used for the current data file.</a>, Previous: <a href="#IMPORT" accesskey="p" rel="prev">Creating elements from XML.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1223 </div>
1224 <h3 class="section" id="Testing-cache-status_002e"><span>8.15 Testing cache status.<a class="copiable-link" href="#Testing-cache-status_002e"> &para;</a></span></h3>
1225 <a class="index-entry-id" id="index-ISCACHED-command"></a>
1226 <p>Syntax:
1227 </p><div class="example">
1228 <pre class="example-preformatted">ISCACHED [--lock] [--agent [--sign]] &lt;filename&gt;
1229 </pre></div>
1231 <p>Determines the file cache status of the specified <var class="var">filename</var>.
1232 The default is to test whether the filename is cached in memory. Passing
1233 option <samp class="option">--agent</samp> will test the <code class="command">gpg-agent</code> cache for at most
1234 one cached key used for opening the data file (see <a class="pxref" href="#OPEN">Opening a data file.</a>). To test if
1235 a signing key is cached, pass <samp class="option">--sign</samp> along with <samp class="option">--agent</samp>.
1236 Both the <samp class="option">--agent</samp> and <samp class="option">--sign</samp> options require an opened data
1237 file.
1238 <br><br>
1239 An <em class="emph">OK</em> response is returned if the specified <var class="var">filename</var> is found
1240 in the cache. If not found in the cache but exists on the filesystem
1241 then <code class="code">GPG_ERR_NO_DATA</code> is returned. Otherwise a filesystem error is
1242 returned.
1243 <br><br>
1244 The <samp class="option">--lock</samp> option will lock the file mutex of <var class="var">filename</var> when
1245 the file exists; it does not need to be opened nor cached. The lock will be
1246 released when the client exits or sends the <code class="code">UNLOCK</code> command
1247 (see <a class="pxref" href="#UNLOCK">Removing a data file lock.</a>). When this option is passed the current data file is closed.
1248 </p>
1250 <hr>
1251 </div>
1252 <div class="section-level-extent" id="KEYINFO">
1253 <div class="nav-panel">
1255 Next: <a href="#KILL" accesskey="n" rel="next">Terminating another client.</a>, Previous: <a href="#ISCACHED" accesskey="p" rel="prev">Testing cache status.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1256 </div>
1257 <h3 class="section" id="Showing-keys-used-for-the-current-data-file_002e"><span>8.16 Showing keys used for the current data file.<a class="copiable-link" href="#Showing-keys-used-for-the-current-data-file_002e"> &para;</a></span></h3>
1258 <a class="index-entry-id" id="index-KEYINFO-command"></a>
1259 <p>Syntax:
1260 </p><div class="example">
1261 <pre class="example-preformatted">KEYINFO [--learn]
1262 </pre></div>
1264 <p>Returns a new line separated list of key ID&rsquo;s that the currently opened
1265 data file has recipients and signers for. If the key is a signing key it
1266 will be prefixed with an <code class="code">S</code>. If the file is a new one, or has no
1267 signers in the case of being symmetrically encrypted, the error code
1268 <code class="code">GPG_ERR_NO_DATA</code> is returned.
1269 <br><br>
1270 When the <samp class="option">--learn</samp> option is passed, keys on a smartcard will be
1271 imported.
1272 </p>
1274 <hr>
1275 </div>
1276 <div class="section-level-extent" id="KILL">
1277 <div class="nav-panel">
1279 Next: <a href="#LIST" accesskey="n" rel="next">Showing document elements.</a>, Previous: <a href="#KEYINFO" accesskey="p" rel="prev">Showing keys used for the current data file.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1280 </div>
1281 <h3 class="section" id="Terminating-another-client_002e"><span>8.17 Terminating another client.<a class="copiable-link" href="#Terminating-another-client_002e"> &para;</a></span></h3>
1282 <a class="index-entry-id" id="index-KILL-command"></a>
1283 <p>Syntax:
1284 </p><div class="example">
1285 <pre class="example-preformatted">KILL &lt;thread_id&gt;
1286 </pre></div>
1288 <p>Terminates the client identified by <var class="var">thread_id</var> and releases any file
1289 lock or other resources it has held. See <code class="code">GETINFO</code> (see <a class="pxref" href="#GETINFO">Obtaining server and client information.</a>)
1290 for details about listing connected clients. An <code class="code">invoking_user</code>
1291 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) may kill any client while others may only kill
1292 clients of the same <code class="code">UID</code> or <abbr class="abbr">TLS</abbr> fingerprint.
1293 </p>
1295 <hr>
1296 </div>
1297 <div class="section-level-extent" id="LIST">
1298 <div class="nav-panel">
1300 Next: <a href="#LISTKEYS" accesskey="n" rel="next">Listing keys in the key ring.</a>, Previous: <a href="#KILL" accesskey="p" rel="prev">Terminating another client.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1301 </div>
1302 <h3 class="section" id="Showing-document-elements_002e"><span>8.18 Showing document elements.<a class="copiable-link" href="#Showing-document-elements_002e"> &para;</a></span></h3>
1303 <a class="index-entry-id" id="index-LIST-command"></a>
1304 <p>Syntax:
1305 </p><div class="example">
1306 <pre class="example-preformatted">LIST [--inquire] [--recurse] [--sexp] [element[&lt;TAB&gt;child[..]]]
1307 </pre></div>
1309 <p>If no element path is given then a newline separated list of root elements
1310 is returned with a data response. If given, then children of the specified
1311 element path are returned.
1312 <br><br>
1313 Each element path
1314 returned will have zero or more flags appened to it. These flags are
1315 delimited from the element path by a single space character. A flag itself
1316 is a single character. Flag <code class="code">P</code> indicates that access to the element
1317 is denied. Flag <code class="code">+</code> indicates that there are child nodes of
1318 the current element path. Flag <code class="code">E</code> indicates that an element of the
1319 element path contained in a <var class="var">target</var> attribute could not be found. Flag
1320 <code class="code">O</code> indicates that a <var class="var">target</var> attribute recursion limit was reached
1321 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>). Flag <code class="code">T</code>, followed by a single space character,
1322 then an element path, is the element path of the <var class="var">target</var> attribute
1323 contained in the current element.
1324 <br><br>
1325 When a specified element path contains an error either from the final
1326 element in the path or any previous element, the path is still shown but
1327 will contain the error flag for the element with the error. Determining
1328 the actual element which contains the error is up to the client. This can be
1329 done by traversing the final element up to parent elements that contain the
1330 same error flag.
1331 <br><br>
1332 The option <samp class="option">--recurse</samp> may be used to list the entire element tree
1333 for a specified element path or the entire tree for all root elements.
1334 <br><br>
1335 The option <samp class="option">--sexp</samp> outputs the list in an s-expression and also
1336 appends an elements&rsquo; attributes and attribute values. The syntax is:
1337 </p>
1338 <div class="example">
1339 <pre class="example-preformatted">(11:list-result
1340 (4:path N:&lt;path&gt; 5:flags N:&lt;flags&gt;
1341 (5:attrs N:&lt;name&gt; N:&lt;value&gt; ...)
1345 </pre></div>
1347 <p>When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1348 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1349 </p>
1351 <hr>
1352 </div>
1353 <div class="section-level-extent" id="LISTKEYS">
1354 <div class="nav-panel">
1356 Next: <a href="#LOCK" accesskey="n" rel="next">Locking the current data file.</a>, Previous: <a href="#LIST" accesskey="p" rel="prev">Showing document elements.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1357 </div>
1358 <h3 class="section" id="Listing-keys-in-the-key-ring_002e"><span>8.19 Listing keys in the key ring.<a class="copiable-link" href="#Listing-keys-in-the-key-ring_002e"> &para;</a></span></h3>
1359 <a class="index-entry-id" id="index-LISTKEYS-command"></a>
1360 <p>Syntax:
1361 </p><div class="example">
1362 <pre class="example-preformatted">LISTKEYS [--secret-only] [pattern[,&lt;pattern&gt;]]
1363 </pre></div>
1365 <p>Returns a new line separated list of key information matching a comma
1366 separated list of <var class="var">pattern</var>&rsquo;s. When option <samp class="option">--secret-only</samp> is
1367 specified, only keys matching <var class="var">pattern</var> that also have a secret key
1368 available will be returned.
1369 </p>
1371 <hr>
1372 </div>
1373 <div class="section-level-extent" id="LOCK">
1374 <div class="nav-panel">
1376 Next: <a href="#LS" accesskey="n" rel="next">Showing available data files.</a>, Previous: <a href="#LISTKEYS" accesskey="p" rel="prev">Listing keys in the key ring.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1377 </div>
1378 <h3 class="section" id="Locking-the-current-data-file_002e"><span>8.20 Locking the current data file.<a class="copiable-link" href="#Locking-the-current-data-file_002e"> &para;</a></span></h3>
1379 <a class="index-entry-id" id="index-LOCK-command"></a>
1380 <p>Syntax:
1381 </p><div class="example">
1382 <pre class="example-preformatted">LOCK
1383 </pre></div>
1385 <p>Locks the mutex associated with the opened file. This prevents other clients
1386 from sending commands to the same opened file until the client
1387 that sent this command either disconnects or sends the <code class="code">UNLOCK</code>
1388 command. See <a class="xref" href="#UNLOCK">Removing a data file lock.</a>.
1389 </p>
1391 <hr>
1392 </div>
1393 <div class="section-level-extent" id="LS">
1394 <div class="nav-panel">
1396 Next: <a href="#MOVE" accesskey="n" rel="next">Moving an element.</a>, Previous: <a href="#LOCK" accesskey="p" rel="prev">Locking the current data file.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1397 </div>
1398 <h3 class="section" id="Showing-available-data-files_002e"><span>8.21 Showing available data files.<a class="copiable-link" href="#Showing-available-data-files_002e"> &para;</a></span></h3>
1399 <a class="index-entry-id" id="index-LS-command"></a>
1400 <p>Syntax:
1401 </p><div class="example">
1402 <pre class="example-preformatted">LS [--verbose]
1403 </pre></div>
1405 <p>Returns a newline separated list of data files stored in the data directory
1406 <samp class="file">HOMEDIR/data</samp> (see <a class="pxref" href="#Invoking">Invoking <code class="command">pwmd</code></a>) with a data response. When the
1407 <var class="var">&ndash;verbose</var> option is passed, the space-separated filesystem inode
1408 access, modification and change times are appended to the line.
1409 </p>
1411 <hr>
1412 </div>
1413 <div class="section-level-extent" id="MOVE">
1414 <div class="nav-panel">
1416 Next: <a href="#NOP" accesskey="n" rel="next">Testing the connection.</a>, Previous: <a href="#LS" accesskey="p" rel="prev">Showing available data files.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1417 </div>
1418 <h3 class="section" id="Moving-an-element_002e"><span>8.22 Moving an element.<a class="copiable-link" href="#Moving-an-element_002e"> &para;</a></span></h3>
1419 <a class="index-entry-id" id="index-MOVE-command"></a>
1420 <p>Syntax:
1421 </p><div class="example">
1422 <pre class="example-preformatted">MOVE [--inquire] source[&lt;TAB&gt;child[..]] [dest[&lt;TAB&gt;child[..]]]
1423 </pre></div>
1425 <p>Moves the source element path to the destination element path. If the
1426 destination is not specified then it will be moved to the root node of the
1427 document. If the destination is specified and exists then it will be
1428 overwritten; otherwise non-existing elements of the destination element
1429 path will be created.
1430 <br><br>
1431 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1432 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1433 </p>
1435 <hr>
1436 </div>
1437 <div class="section-level-extent" id="NOP">
1438 <div class="nav-panel">
1440 Next: <a href="#OPEN" accesskey="n" rel="next">Opening a data file.</a>, Previous: <a href="#MOVE" accesskey="p" rel="prev">Moving an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1441 </div>
1442 <h3 class="section" id="Testing-the-connection_002e"><span>8.23 Testing the connection.<a class="copiable-link" href="#Testing-the-connection_002e"> &para;</a></span></h3>
1443 <a class="index-entry-id" id="index-NOP-command"></a>
1444 <p>Syntax:
1445 </p><div class="example">
1446 <pre class="example-preformatted">NOP
1447 </pre></div>
1449 <p>This command does nothing. It is useful for testing the connection for a
1450 timeout condition.
1451 </p>
1453 <hr>
1454 </div>
1455 <div class="section-level-extent" id="OPEN">
1456 <div class="nav-panel">
1458 Next: <a href="#OPTION" accesskey="n" rel="next">Setting various client parameters.</a>, Previous: <a href="#NOP" accesskey="p" rel="prev">Testing the connection.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1459 </div>
1460 <h3 class="section" id="Opening-a-data-file_002e"><span>8.24 Opening a data file.<a class="copiable-link" href="#Opening-a-data-file_002e"> &para;</a></span></h3>
1461 <a class="index-entry-id" id="index-OPEN-command"></a>
1462 <p>Syntax:
1463 </p><div class="example">
1464 <pre class="example-preformatted">OPEN [--lock] &lt;filename&gt;
1465 </pre></div>
1467 <p>Opens <var class="var">filename</var>. When the <var class="var">filename</var> is not found on the
1468 file-system then a new in-memory document will be created. If the file is
1469 found, it is looked for in the file cache and when found no passphrase will
1470 be required to open it. When not cached, <cite class="cite">pinentry(1)</cite> will be used to
1471 retrieve the passphrase for decryption unless <samp class="option">disable-pinentry</samp>
1472 (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>) was specified in which case <code class="command">pwmd</code> will
1473 <em class="emph">INQUIRE</em> the client for the passphrase. Note than when configuration
1474 option <samp class="option">strict_open</samp> is enabled and the client is not an
1475 <samp class="option">invoking_user</samp>, an error will be returned when the data file does
1476 not exist.
1477 <br><br>
1478 When the <samp class="option">--lock</samp> option is passed then the file mutex will be
1479 locked as if the <code class="code">LOCK</code> command (see <a class="pxref" href="#LOCK">Locking the current data file.</a>) had been sent after the
1480 file had been opened.
1481 </p>
1483 <hr>
1484 </div>
1485 <div class="section-level-extent" id="OPTION">
1486 <div class="nav-panel">
1488 Next: <a href="#PASSWD" accesskey="n" rel="next">Changing the passphrase for a key.</a>, Previous: <a href="#OPEN" accesskey="p" rel="prev">Opening a data file.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1489 </div>
1490 <h3 class="section" id="Setting-various-client-parameters_002e"><span>8.25 Setting various client parameters.<a class="copiable-link" href="#Setting-various-client-parameters_002e"> &para;</a></span></h3>
1491 <a class="index-entry-id" id="index-OPTION-command"></a>
1492 <p>Syntax:
1493 </p><div class="example">
1494 <pre class="example-preformatted">OPTION &lt;NAME&gt;=[&lt;VALUE&gt;]
1495 </pre></div>
1497 <p>Sets a client option <var class="var">name</var> to <var class="var">value</var>. The value for an option is
1498 kept for the duration of the connection with the exception of the
1499 <code class="command">pinentry</code> options which are defaults for all future connections
1500 (see <a class="pxref" href="#Pinentry">Pinentry configuration</a>). When <var class="var">value</var> is empty the option is unset.
1501 <br><br>
1502 </p><dl class="table">
1503 <dt>DISABLE-PINENTRY</dt>
1504 <dd><p>Disable use of <code class="command">pinentry</code> for passphrase retrieval. When <code class="code">1</code>, a
1505 server inquire is sent to the client to obtain the passphrase. This option
1506 may be set as needed before the <code class="code">OPEN</code> (see <a class="pxref" href="#OPEN">Opening a data file.</a>), <code class="code">PASSWD</code>
1507 (see <a class="pxref" href="#PASSWD">Changing the passphrase for a key.</a>) and <code class="code">SAVE</code> (see <a class="pxref" href="#SAVE">Saving document changes to disk.</a>) commands. Set to <code class="code">0</code>
1508 to use a <code class="command">pinentry</code>.
1509 <br><br>
1510 </p></dd>
1511 <dt>DISPLAY</dt>
1512 <dd><p>Set or unset the X11 display to use when prompting for a passphrase.
1513 <br><br>
1514 </p></dd>
1515 <dt>TTYNAME</dt>
1516 <dd><p>Set the terminal device path to use when prompting for a passphrase.
1517 <br><br>
1518 </p></dd>
1519 <dt>TTYTYPE</dt>
1520 <dd><p>Set the terminal type for use with <samp class="option">TTYNAME</samp>.
1521 <br><br>
1522 </p></dd>
1523 <dt>NAME</dt>
1524 <dd><p>Associates the thread ID of the connection with the specified textual
1525 representation. Useful for debugging log messages. May not contain whitespace.
1526 <br><br>
1527 </p></dd>
1528 <dt>LOCK-TIMEOUT</dt>
1529 <dd><p>When not <code class="code">0</code>, the duration in tenths of a second to wait for the file
1530 mutex which has been locked by another thread to be released before returning
1531 an error. When <code class="code">-1</code> the error will be returned immediately.
1532 <br><br>
1533 </p></dd>
1534 <dt>CLIENT-STATE</dt>
1535 <dd><p>When set to <code class="code">1</code> then client state status messages for other clients are
1536 sent to the current client. The default is <code class="code">0</code>.
1537 </p></dd>
1538 </dl>
1541 <hr>
1542 </div>
1543 <div class="section-level-extent" id="PASSWD">
1544 <div class="nav-panel">
1546 Next: <a href="#REALPATH" accesskey="n" rel="next">Resolving an element.</a>, Previous: <a href="#OPTION" accesskey="p" rel="prev">Setting various client parameters.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1547 </div>
1548 <h3 class="section" id="Changing-the-passphrase-for-a-key_002e"><span>8.26 Changing the passphrase for a key.<a class="copiable-link" href="#Changing-the-passphrase-for-a-key_002e"> &para;</a></span></h3>
1549 <a class="index-entry-id" id="index-PASSWD-command"></a>
1550 <p>Syntax:
1551 </p><div class="example">
1552 <pre class="example-preformatted">PASSWD
1553 </pre></div>
1555 <p>Changes the passphrase of the secret key required to open the current
1556 data file. If the data file is symmetrically encrypted the error
1557 <code class="code">GPG_ERR_NOT_SUPPORTED</code> is returned. When symmetrically encrypted
1558 the <code class="code">SAVE</code> command (see <a class="pxref" href="#SAVE">Saving document changes to disk.</a>) should be used instead to prevent
1559 this command saving any unwanted changes to the <abbr class="abbr">XML</abbr> document.
1560 <br><br>
1561 Note that when the current data file has been either encrypted or signed
1562 with a key stored on a smartcard this command will return an error. In this
1563 case you should instead use <code class="command">gpg --card-edit</code> to change the
1564 pin of the smartcard or <code class="command">gpg --edit-key</code> to change the passphrase
1565 of the key used to sign or encrypt the data file.
1566 <br><br>
1567 This command is not available to non-invoking clients
1568 (see <a class="pxref" href="#Access-Control">Access Control</a>).
1569 </p>
1571 <hr>
1572 </div>
1573 <div class="section-level-extent" id="REALPATH">
1574 <div class="nav-panel">
1576 Next: <a href="#RENAME" accesskey="n" rel="next">Renaming an element.</a>, Previous: <a href="#PASSWD" accesskey="p" rel="prev">Changing the passphrase for a key.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1577 </div>
1578 <h3 class="section" id="Resolving-an-element_002e"><span>8.27 Resolving an element.<a class="copiable-link" href="#Resolving-an-element_002e"> &para;</a></span></h3>
1579 <a class="index-entry-id" id="index-REALPATH-command"></a>
1580 <p>Syntax:
1581 </p><div class="example">
1582 <pre class="example-preformatted">REALPATH [--inquire] element[&lt;TAB&gt;child[..]]
1583 </pre></div>
1585 <p>Resolves all <code class="code">target</code> attributes of the specified element path and
1586 returns the result with a data response. See <a class="xref" href="#Target-Attribute">The <code class="code">target</code> attribute</a>, for details.
1587 <br><br>
1588 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1589 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1590 </p>
1592 <hr>
1593 </div>
1594 <div class="section-level-extent" id="RENAME">
1595 <div class="nav-panel">
1597 Next: <a href="#RESET" accesskey="n" rel="next">Resetting the client state.</a>, Previous: <a href="#REALPATH" accesskey="p" rel="prev">Resolving an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1598 </div>
1599 <h3 class="section" id="Renaming-an-element_002e"><span>8.28 Renaming an element.<a class="copiable-link" href="#Renaming-an-element_002e"> &para;</a></span></h3>
1600 <a class="index-entry-id" id="index-RENAME-command"></a>
1601 <p>Syntax:
1602 </p><div class="example">
1603 <pre class="example-preformatted">RENAME [--inquire] element[&lt;TAB&gt;child[..]] &lt;value&gt;
1604 </pre></div>
1606 <p>Renames the specified <var class="var">element</var> to the new <var class="var">value</var>. If an element of
1607 the same name as the <var class="var">value</var> already exists it will be overwritten.
1608 <br><br>
1609 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1610 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1611 </p>
1613 <hr>
1614 </div>
1615 <div class="section-level-extent" id="RESET">
1616 <div class="nav-panel">
1618 Next: <a href="#SAVE" accesskey="n" rel="next">Saving document changes to disk.</a>, Previous: <a href="#RENAME" accesskey="p" rel="prev">Renaming an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1619 </div>
1620 <h3 class="section" id="Resetting-the-client-state_002e"><span>8.29 Resetting the client state.<a class="copiable-link" href="#Resetting-the-client-state_002e"> &para;</a></span></h3>
1621 <a class="index-entry-id" id="index-RESET-command"></a>
1622 <p>Syntax:
1623 </p><div class="example">
1624 <pre class="example-preformatted">RESET
1625 </pre></div>
1627 <p>Closes the currently opened file but keeps any previously set client options
1628 (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>).
1629 </p>
1631 <hr>
1632 </div>
1633 <div class="section-level-extent" id="SAVE">
1634 <div class="nav-panel">
1636 Next: <a href="#STORE" accesskey="n" rel="next">Modifying the content of an element.</a>, Previous: <a href="#RESET" accesskey="p" rel="prev">Resetting the client state.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1637 </div>
1638 <h3 class="section" id="Saving-document-changes-to-disk_002e"><span>8.30 Saving document changes to disk.<a class="copiable-link" href="#Saving-document-changes-to-disk_002e"> &para;</a></span></h3>
1639 <a class="index-entry-id" id="index-SAVE-command"></a>
1640 <p>Syntax:
1641 </p><div class="example">
1642 <pre class="example-preformatted">SAVE [--sign-keyid=[&lt;fpr&gt;]] [--symmetric | --keyid=&lt;fpr&gt;[,..] | --inquire-keyid]
1643 </pre></div>
1645 <p>Writes the in-memory <abbr class="abbr">XML</abbr> document to disk. The file written to is the
1646 file that was opened when using the <code class="code">OPEN</code> command (see <a class="pxref" href="#OPEN">Opening a data file.</a>).
1647 <br><br>
1648 If the file is a new one one of <samp class="option">--symmetric</samp>, <samp class="option">--keyid</samp> or
1649 <samp class="option">--inquire-keyid</samp> is required. When not <samp class="option">--symmetric</samp> the
1650 option <samp class="option">--sign-keyid</samp> is also required but optional otherwise.
1651 <br><br>
1652 You can encrypt the data file to a recipient other than the one that it
1653 was originally encrypted with by passing the <samp class="option">--keyid</samp> or
1654 <samp class="option">--inquire-keyid</samp> option with a comma separated list of
1655 public encryption key fingerprints as its argument. Use the
1656 <code class="command">LISTKEYS</code> command (see <a class="pxref" href="#LISTKEYS">Listing keys in the key ring.</a>) to show key information by
1657 pattern. The <samp class="option">--sign-keyid</samp> option may also be used to sign the data
1658 file with an alternate key by specifying the fingerprint of a signing key.
1659 Only one signing key is supported unlike the <samp class="option">--keyid</samp> option.
1660 A passphrase to decrypt the data file
1661 will be required when one or more of the original encryption keys or signing
1662 key are not found in either of these two options&rsquo; arguments or when the data
1663 file is symmetrically encrypted regardless of the <code class="code">require_save_key</code>
1664 configuration parameter. The original encryption keys and signing key will be
1665 used when neither of these options are specified.
1666 <br><br>
1667 The <samp class="option">--keyid</samp> and <samp class="option">--sign-keyid</samp> options are not available
1668 to non-invoking clients
1669 (see <a class="pxref" href="#Access-Control">Access Control</a>) when the recipients or signer do not match those
1670 that were used when the file was <code class="code">OPEN</code>&rsquo;ed.
1671 <br><br>
1672 The <samp class="option">--symmetric</samp> option specifies that a new data file be
1673 conventionally encrypted. These types of data files do not use a recipient
1674 public key but may optionally be signed by using the <samp class="option">--sign-keyid</samp>
1675 option. To remove the signing key from a symmtrically encrypted data file,
1676 leave the option value empty.
1677 <br><br>
1678 Note that you cannot change encryption schemes once a data file has been
1679 saved.
1680 </p>
1682 <hr>
1683 </div>
1684 <div class="section-level-extent" id="STORE">
1685 <div class="nav-panel">
1687 Next: <a href="#UNLOCK" accesskey="n" rel="next">Removing a data file lock.</a>, Previous: <a href="#SAVE" accesskey="p" rel="prev">Saving document changes to disk.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1688 </div>
1689 <h3 class="section" id="Modifying-the-content-of-an-element_002e"><span>8.31 Modifying the content of an element.<a class="copiable-link" href="#Modifying-the-content-of-an-element_002e"> &para;</a></span></h3>
1690 <a class="index-entry-id" id="index-STORE-command"></a>
1691 <p>Syntax:
1692 </p><div class="example">
1693 <pre class="example-preformatted">STORE [--no-inherit-acl] element[&lt;TAB&gt;child[..]]&lt;TAB&gt;[content]
1694 </pre></div>
1696 <p>This command uses a server <em class="emph">INQUIRE</em> to retrieve data from the client.
1697 <br><br>
1698 Creates a new element path or modifies the <var class="var">content</var> of an existing
1699 element. If only a single element is specified then a new root element is
1700 created. Otherwise, elements are <kbd class="key">TAB</kbd> delimited and the content will be
1701 set to the final <kbd class="key">TAB</kbd> delimited element. If no <var class="var">content</var> is
1702 specified after the final <kbd class="key">TAB</kbd>, then the content of the existing
1703 element will be removed; or will be empty if creating a new element.
1704 <br><br>
1705 The option <samp class="option">--no-inherit-acl</samp> prevents a newly created element from
1706 inheriting the value of the parent element <code class="code">_acl</code> attribute. In either
1707 case, the current user is made the owner of the newly created element(s).
1708 <br><br>
1709 The only restriction of an element name is that it not contain whitespace
1710 characters. There is no other whitespace between the <kbd class="key">TAB</kbd> delimited
1711 elements. It is recommended that the content of an element be base64 encoded
1712 when it contains control or <kbd class="key">TAB</kbd> characters to prevent <abbr class="abbr">XML</abbr>
1713 parsing and <code class="command">pwmd</code> syntax errors.
1714 </p>
1716 <hr>
1717 </div>
1718 <div class="section-level-extent" id="UNLOCK">
1719 <div class="nav-panel">
1721 Next: <a href="#XPATH" accesskey="n" rel="next">Modifying more than one element.</a>, Previous: <a href="#STORE" accesskey="p" rel="prev">Modifying the content of an element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1722 </div>
1723 <h3 class="section" id="Removing-a-data-file-lock_002e"><span>8.32 Removing a data file lock.<a class="copiable-link" href="#Removing-a-data-file-lock_002e"> &para;</a></span></h3>
1724 <a class="index-entry-id" id="index-UNLOCK-command"></a>
1725 <p>Syntax:
1726 </p><div class="example">
1727 <pre class="example-preformatted">UNLOCK
1728 </pre></div>
1730 <p>Unlocks the file mutex which was locked with the <code class="code">LOCK</code> command or
1731 a commands&rsquo; <samp class="option">--lock</samp> option (see <a class="pxref" href="#LOCK">Locking the current data file.</a>, see <a class="pxref" href="#OPEN">Opening a data file.</a>,
1732 see <a class="pxref" href="#ISCACHED">Testing cache status.</a>).
1733 </p>
1735 <hr>
1736 </div>
1737 <div class="section-level-extent" id="XPATH">
1738 <div class="nav-panel">
1740 Next: <a href="#XPATHATTR" accesskey="n" rel="next">Modifying more than one element&rsquo;s attributes.</a>, Previous: <a href="#UNLOCK" accesskey="p" rel="prev">Removing a data file lock.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1741 </div>
1742 <h3 class="section" id="Modifying-more-than-one-element_002e"><span>8.33 Modifying more than one element.<a class="copiable-link" href="#Modifying-more-than-one-element_002e"> &para;</a></span></h3>
1743 <a class="index-entry-id" id="index-XPATH-command"></a>
1744 <p>Syntax:
1745 </p><div class="example">
1746 <pre class="example-preformatted">XPATH [--inquire] &lt;expression&gt;[&lt;TAB&gt;[value]]
1747 </pre></div>
1749 <p>Evaluates an XPath <var class="var">expression</var>. If no <var class="var">value</var> argument is
1750 specified it is assumed the expression is a request to return a result.
1751 Otherwise, the result is set to the <var class="var">value</var> argument and the document is
1752 updated. If there is no <var class="var">value</var> after the <kbd class="key">TAB</kbd> character, the value
1753 is assumed to be empty and the document is updated. For example:
1754 </p><br>
1755 <div class="example">
1756 <pre class="example-preformatted">XPATH //element[@_name='password']<kbd class="key">TAB</kbd>
1757 </pre></div>
1758 <br>
1759 <p>would clear the content of all <var class="var">password</var> elements in the data file
1760 while leaving off the trailing <kbd class="key">TAB</kbd> would return all <var class="var">password</var>
1761 elements in <abbr class="abbr">XML</abbr> format.
1762 <br><br>
1763 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1764 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1765 <br><br>
1766 See <a class="url" href="https://www.w3schools.com/xml/xpath_intro.asp">https://www.w3schools.com/xml/xpath_intro.asp</a> for <abbr class="abbr">XPATH</abbr>
1767 expression syntax.
1768 </p>
1770 <hr>
1771 </div>
1772 <div class="section-level-extent" id="XPATHATTR">
1773 <div class="nav-panel">
1775 Previous: <a href="#XPATH" accesskey="p" rel="prev">Modifying more than one element.</a>, Up: <a href="#Commands" accesskey="u" rel="up">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1776 </div>
1777 <h3 class="section" id="Modifying-more-than-one-element_0027s-attributes_002e"><span>8.34 Modifying more than one element&rsquo;s attributes.<a class="copiable-link" href="#Modifying-more-than-one-element_0027s-attributes_002e"> &para;</a></span></h3>
1778 <a class="index-entry-id" id="index-XPATHATTR-command"></a>
1779 <p>Syntax:
1780 </p><div class="example">
1781 <pre class="example-preformatted">XPATHATTR [--inquire] SET|DELETE &lt;name&gt; &lt;expression&gt;[&lt;TAB&gt;[&lt;value&gt;]]
1782 </pre></div>
1784 <p>Like the <code class="code">XPATH</code> command (see <a class="pxref" href="#XPATH">Modifying more than one element.</a>) but operates on element
1785 attributes and does not return a result. For the <var class="var">SET</var> operation the
1786 <var class="var">value</var> is optional but the field is required. If not specified then
1787 the attribute value will be empty. For example:
1788 </p><br>
1789 <div class="example">
1790 <pre class="example-preformatted">XPATHATTR SET password //element[@_name='password']<kbd class="key">TAB</kbd>
1791 </pre></div>
1792 <br>
1793 <p>would create a <var class="var">password</var> attribute for each <var class="var">password</var> element
1794 found in the document. The attribute value will be empty but still exist.
1795 <br><br>
1796 When the <samp class="option">--inquire</samp> option is passed then all remaining non-option
1797 arguments are retrieved via a server <em class="emph">INQUIRE</em>.
1798 <br><br>
1799 See <a class="url" href="https://www.w3schools.com/xml/xpath_intro.asp">https://www.w3schools.com/xml/xpath_intro.asp</a> for <abbr class="abbr">XPATH</abbr>
1800 expression syntax.
1801 </p>
1804 <hr>
1805 </div>
1806 </div>
1807 <div class="chapter-level-extent" id="Bulk-Commands">
1808 <div class="nav-panel">
1810 Next: <a href="#Status-Messages" accesskey="n" rel="next">Status messages and their meanings</a>, Previous: <a href="#Commands" accesskey="p" rel="prev">Protocol commands and their syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1811 </div>
1812 <h2 class="chapter" id="Running-multiple-commands-in-sequence"><span>9 Running multiple commands in sequence<a class="copiable-link" href="#Running-multiple-commands-in-sequence"> &para;</a></span></h2>
1813 <p>Multiple commands may be run in sequence by using the <code class="code">BULK</code> command
1814 (see <a class="pxref" href="#BULK">Run a series of commands in sequence.</a>). Using this feature may speed up remote connections since less
1815 socket IO is needed. The <code class="code">BULK</code> command uses an <em class="emph">INQUIRE</em> to obtain
1816 an canonical s-expression of commands to be run. The s-expression syntax is as
1817 follows:
1818 </p>
1819 <div class="example">
1820 <pre class="example-preformatted">(2:id&lt;I&gt;:&lt;id&gt; &lt;P&gt;:&lt;prot&gt;&lt;D&gt;:[&lt;data&gt;] [2:rc&lt;R&gt;:&lt;code&gt;[|&lt;code&gt;...2:id...| 2:id...])
1821 </pre></div>
1823 <p>Each token is prefixed with an unsigned integer that specifies the length of
1824 the token, followed by a colon &rsquo;<code class="code">:</code>&rsquo;, followed by the token itself. Pwmd
1825 uses token pairs to create a <em class="emph">name=value</em> relationship. Whitespace is
1826 allowed between token pairs. For example, the following is valid:
1827 </p>
1828 <div class="example">
1829 <pre class="example-preformatted">( 2:id 7:FirstID 4:LIST0: 2:rc 1:0 (2:id6:Second 7:GETINFO7:version))
1830 </pre></div>
1832 <p>The <code class="code">id</code> token begins a new command and requires an <var class="var">&lt;id&gt;</var> token
1833 of length <var class="var">&lt;I&gt;</var> to uniquely identify this command. The next token pair is
1834 the protocol command name, without any command arguments, of length <var class="var">&lt;P&gt;</var>
1835 to run followed by a colon &rsquo;<code class="code">:</code>&rsquo;, followed by the command <var class="var">&lt;prot&gt;</var>
1836 itself, followed by the length <var class="var">&lt;D&gt;</var> of both command arguments and data,
1837 followed by a colon &rsquo;<code class="code">:</code>&rsquo; and finally the <var class="var">&lt;data&gt;</var> itself. If no
1838 arguments or data are needed for the command, set the length of the data
1839 <var class="var">&lt;D&gt;</var> to <code class="code">0</code> and append the required colon &rsquo;<code class="code">:</code>&rsquo;.
1840 </p>
1841 <p>A new command enclosed in parentheses may be run when the previous command
1842 returns an error code that matches the <var class="var">&lt;code&gt;</var> token of length <var class="var">&lt;R&gt;</var>
1843 by appending <var class="var">rc</var> tokens to the end of the previous commands <var class="var">&lt;data&gt;</var>
1844 token. You may also test another return code for the previous command by
1845 placing the next <var class="var">rc</var> token at the end of the closing parentheses of the
1846 previous return code command.
1847 </p>
1848 <p>Multiple <code class="code">rc</code> <var class="var">code</var>&rsquo;s may be specified for a single command by
1849 separating them with a pipe <code class="code">|</code> character. This lets you specify an
1850 <em class="emph">if-this-and-that</em> expression for a commands return code.
1851 </p>
1852 <p>If another command is to be run after the previous and does not specify an
1853 <var class="var">rc</var> token, the return value is ignored for the previous command and the
1854 next command is run. There is no limit on the number of commands or
1855 sub-commands except for system memory.
1856 </p>
1857 <p>After inquiring the commands to be run, <code class="code">BULK</code> will run each command with
1858 <var class="var">&lt;data&gt;</var> as its argument and store the result code and data of the command
1859 in a <code class="code">bulk-result</code> canonical s-expression of the syntax:
1860 </p>
1861 <div class="example">
1862 <pre class="example-preformatted">(11:bulk-result2:id&lt;I&gt;:&lt;id&gt;2:rc&lt;R&gt;:&lt;code&gt;&lt;D&gt;:[&lt;data&gt;][2:id...])
1863 </pre></div>
1865 <p>The <code class="code">11:bulk-result</code> token begins the result of all commands. The
1866 <var class="var">&lt;id&gt;</var> token of length <var class="var">&lt;I&gt;</var> is the same that was associated with the
1867 command from the <em class="emph">INQUIRE</em>&rsquo;d syntax and is prefixed with <code class="code">2:id</code>. The
1868 return code of the command is prefixed with <code class="code">2:rc</code> followed by the length
1869 <var class="var">&lt;R&gt;</var> of the unsigned integer <var class="var">&lt;code&gt;</var> then the return <var class="var">&lt;code&gt;</var>
1870 itself. If the command returned any <var class="var">&lt;data&gt;</var>, it is prefixed with a
1871 length <var class="var">&lt;D&gt;</var> and immediately following the return <var class="var">&lt;code&gt;</var>. Otherwise,
1872 <var class="var">&lt;D&gt;</var> will be <code class="code">0</code> and followed by a colon &rsquo;<code class="code">:</code>&rsquo;.
1873 </p>
1875 <hr>
1876 </div>
1877 <div class="chapter-level-extent" id="Status-Messages">
1878 <div class="nav-panel">
1880 Next: <a href="#Target-Attribute" accesskey="n" rel="next">The <code class="code">target</code> attribute</a>, Previous: <a href="#Bulk-Commands" accesskey="p" rel="prev">Running multiple commands in sequence</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1881 </div>
1882 <h2 class="chapter" id="Status-messages-and-their-meanings"><span>10 Status messages and their meanings<a class="copiable-link" href="#Status-messages-and-their-meanings"> &para;</a></span></h2>
1883 <p>Some commands send status messages to inform the client about certain
1884 operations or as a progress indicator. Status messages begin with a
1885 <code class="code">KEYWORD</code> followed by a status description for status messages that
1886 require it. What status messages are sent, when, and how often may depend on
1887 configuration settings (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>).
1888 </p>
1889 <table class="multitable">
1890 <thead><tr><th width="20%">Message</th><th width="25%">Parameters</th><th width="55%">Description</th></tr></thead>
1891 <tbody><tr><td width="20%">CACHE
1892 <a class="index-entry-id" id="index-CACHE"></a></td><td width="25%"><code class="code">&lt;integer&gt;</code></td><td width="55%">The number of cached documents. Sent to each client after connecting
1893 (see <a class="pxref" href="#GETINFO">Obtaining server and client information.</a>) and to every client after a cache modification.</td></tr>
1894 <tr><td width="20%">CLIENTS
1895 <a class="index-entry-id" id="index-CLIENTS"></a></td><td width="25%"><code class="code">&lt;integer&gt;</code></td><td width="55%">The number of connected clients (see <a class="pxref" href="#GETINFO">Obtaining server and client information.</a>). Sent to each client
1896 when another client either connects or disconnects.</td></tr>
1897 <tr><td width="20%">DECRYPT
1898 <a class="index-entry-id" id="index-DECRYPT"></a></td><td width="25%"></td><td width="55%">Sent to the current client during a decrypt operation. How often this
1899 status message is sent is determined by the <code class="code">keepalive_interval</code>
1900 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) setting.</td></tr>
1901 <tr><td width="20%">ENCRYPT
1902 <a class="index-entry-id" id="index-ENCRYPT"></a></td><td width="25%"></td><td width="55%">Sent to the current client during an encrypt operation. How often this
1903 status message is sent is determined by the <code class="code">keepalive_interval</code>
1904 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) setting.</td></tr>
1905 <tr><td width="20%">GENKEY
1906 <a class="index-entry-id" id="index-GENKEY"></a></td><td width="25%"><code class="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
1907 status message is sent is determined by the <code class="code">keepalive_interval</code>
1908 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) setting. The <var class="var">sigkey_fpr</var> and <var class="var">pubkey_fpr</var>
1909 parameters are added when key generation has completed.</td></tr>
1910 <tr><td width="20%">INQUIRE_MAXLEN
1911 <a class="index-entry-id" id="index-INQUIRE_005fMAXLEN"></a></td><td width="25%"><code class="code">&lt;bytes&gt;</code></td><td width="55%">Sent to the current client from <code class="command">gpg-agent</code> when inquiring data.
1912 This specifies the maximum number of bytes allowed for the client to send and
1913 should not be exceeded.</td></tr>
1914 <tr><td width="20%">KEEPALIVE
1915 <a class="index-entry-id" id="index-KEEPALIVE"></a></td><td width="25%"></td><td width="55%">Sent to each idle client every <var class="var">keepalive_interval</var>
1916 (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>) seconds.</td></tr>
1917 <tr><td width="20%">LOCKED
1918 <a class="index-entry-id" id="index-LOCKED"></a></td><td width="25%"></td><td width="55%">Sent to the current client when another client is holding the lock for
1919 the mutex associated with a data file. How often this status message is sent
1920 is determined by the <code class="code">keepalive_interval</code> (see <a class="pxref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>)
1921 setting.</td></tr>
1922 <tr><td width="20%">NEWFILE
1923 <a class="index-entry-id" id="index-NEWFILE"></a></td><td width="25%"></td><td width="55%">Sent to the current client when the opened (see <a class="pxref" href="#OPEN">Opening a data file.</a>) file does not
1924 exist on the file-system.</td></tr>
1925 <tr><td width="20%">MODIFIED
1926 <a class="index-entry-id" id="index-MODIFIED"></a></td><td width="25%"><code class="code">&lt;client_id&gt;</code></td><td width="55%">Sent to each client with the same opened data file as <var class="var">client_id</var> to
1927 inform them of modifications that were written to disk using the
1928 <code class="command">SAVE</code> command.</td></tr>
1929 <tr><td width="20%">XFER
1930 <a class="index-entry-id" id="index-XFER"></a></td><td width="25%"><code class="code">&lt;sent&gt; &lt;total&gt;</code></td><td width="55%">Sent to the current client when transferring data. It has two space
1931 delimited arguments. The first being the current amount of bytes transferred
1932 and the other being the total bytes to be transferred. Note that since version
1933 <code class="code">3.1.1</code> of <code class="command">pwmd</code> this status message is sent only once and
1934 before the transfer begins with the <var class="var">total</var> argument set to the size of the
1935 data and the <var class="var">sent</var> argument set to <code class="code">0</code> leaving it to the client to
1936 determine the progress of the transfer as the data is received.</td></tr>
1937 <tr><td width="20%">STATE
1938 <a class="index-entry-id" id="index-STATE"></a></td><td width="25%"><code class="code">&lt;client_id&gt; &lt;state&gt;</code></td><td width="55%">Sent to each client to indicate that <var class="var">client_id</var> has changed to
1939 <var class="var">state</var> (see <a class="pxref" href="#GETINFO">Obtaining server and client information.</a> for client states). For a client to receive
1940 another clients state the option <var class="var">CLIENT-STATE</var> must be set
1941 (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>).</td></tr>
1942 <tr><td width="20%">EXPIRE
1943 <a class="index-entry-id" id="index-EXPIRE"></a></td><td width="25%"><code class="code">&lt;epoch_seconds&gt; &lt;epoch_future&gt;|0</code></td><td width="55%">Sent to the current client when <code class="code">GET</code> (see <a class="pxref" href="#GET">Getting the content of an element.</a>) encounters an
1944 <code class="code">_expire</code> (see <a class="pxref" href="#Other-Attributes">Other special attributes</a>) attribute that is in the past or when
1945 <code class="code">STORE</code> (see <a class="pxref" href="#STORE">Modifying the content of an element.</a>) updates the <code class="code">_expire</code> attribute from the
1946 <code class="code">_age</code> attribute value. The second field will be <code class="code">0</code> when <code class="code">GET</code>
1947 sends this status message. Otherwise the second field is the time the next
1948 expiry will be.</td></tr>
1949 <tr><td width="20%">PASSPHRASE_HINT
1950 <a class="index-entry-id" id="index-PASSPHRASE_005fHINT"></a></td><td width="25%">&lt;keyid&gt; &lt;userid&gt;</td><td width="55%">Forwarded from <code class="code">GpgME</code>. Contains information that is useful in a
1951 <code class="command">pinentry</code>. Only sent when pinentry is disabled (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>).</td></tr>
1952 <tr><td width="20%">PASSPHRASE_INFO
1953 <a class="index-entry-id" id="index-PASSPHRASE_005fINFO"></a></td><td width="25%">&lt;flags&gt; &hellip;</td><td width="55%">Forwarded from <code class="code">GpgME</code>. Contains information that is useful in a
1954 <code class="command">pinentry</code>. Only sent when pinentry is disabled (see <a class="pxref" href="#OPTION">Setting various client parameters.</a>).</td></tr>
1955 <tr><td width="20%">REHANDSHAKE
1956 <a class="index-entry-id" id="index-REHANDSHAKE"></a></td><td width="25%"></td><td width="55%">Sent to each <abbr class="acronym">TLS</abbr> client just before performing a cipher renegotiation
1957 after a SIGHUP signal was received.</td></tr>
1958 <tr><td width="20%">BULK
1959 <a class="index-entry-id" id="index-BULK"></a></td><td width="25%"><code class="code">BEGIN|END &lt;command id&gt;</code></td><td width="55%">Sent to the current client before and after the <code class="code">BULK</code> command
1960 (see <a class="pxref" href="#BULK">Run a series of commands in sequence.</a>) runs each command. The <var class="var">&lt;command id&gt;</var> is the same that was
1961 associated with the command in the s-expression syntax.</td></tr>
1962 </tbody>
1963 </table>
1965 <hr>
1966 </div>
1967 <div class="chapter-level-extent" id="Target-Attribute">
1968 <div class="nav-panel">
1970 Next: <a href="#Other-Attributes" accesskey="n" rel="next">Other special attributes</a>, Previous: <a href="#Status-Messages" accesskey="p" rel="prev">Status messages and their meanings</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
1971 </div>
1972 <h2 class="chapter" id="The-target-attribute"><span>11 The <code class="code">target</code> attribute<a class="copiable-link" href="#The-target-attribute"> &para;</a></span></h2>
1973 <a class="index-entry-id" id="index-target-attribute"></a>
1974 <p>A <em class="emph">case sensitive</em> attribute named <code class="code">_target</code> is treated specially
1975 when found in each element of an element path. This attribute, like other
1976 element attributes, is created or modified with the <code class="code">ATTR</code> command
1977 (see <a class="pxref" href="#ATTR">Modifying element attributes.</a>). The value of this attribute is an existing element path
1978 somewhere in the document. If you are familiar with <abbr class="acronym">XML</abbr> entities or
1979 maybe the HTML <code class="code">id</code> or <code class="code">_target</code> attributes or a symbolic link
1980 in a file-system, you may find this attribute behaves similar to any of those.
1981 </p>
1982 <p>To create a <code class="code">_target</code> attribute use the following syntax:
1983 </p>
1984 <div class="example">
1985 <pre class="example-preformatted">ATTR SET _target element[<code class="code">TAB</code>child[..]] element[<code class="code">TAB</code>child[..]]
1986 </pre></div>
1988 <p>Note the single space between the two element paths. The first element path is
1989 where the <code class="code">_target</code> attribute will be created. If the element path does
1990 not exist then it will be created. This is the only time the <code class="code">ATTR</code>
1991 (see <a class="pxref" href="#ATTR">Modifying element attributes.</a>) command will create elements. The attribute is created in the
1992 final element of the element path.
1993 </p>
1994 <p>The second element path is the destination of where you want the first element
1995 path to resolve to. When an element path is passed as an argument to a
1996 protocol command <code class="command">pwmd</code> looks for a <code class="code">_target</code> attribute when
1997 resolving each element and, if found, &quot;jumps&quot; to the attribute value and
1998 continues resolving any remaining elements a commands element path.
1999 </p>
2000 <p>When an element of a element path is removed that a <code class="code">_target</code> attribute
2001 resolves to then an error will occur when trying to access that element. You
2002 may need to either update the <code class="code">_target</code> attribute value with a new element
2003 path or remove the attribute entirely.
2004 </p>
2005 <p>Clients should be careful of creating <code class="code">_target</code> loops, or targets that
2006 resolve to themselves. See the <var class="var">recursion_depth</var> in <a class="ref" href="#Configuration"><code class="command">pwmd</code> configuration file options</a>
2007 for details.
2008 </p>
2009 <p>The <code class="code">REALPATH</code> command (see <a class="pxref" href="#REALPATH">Resolving an element.</a>) can be used to show the element
2010 path after resolving all <code class="code">_target</code> attributes.
2011 </p>
2012 <p><em class="emph">Note that when setting this attribute any children of the element will
2013 be removed.</em>
2014 </p>
2016 <hr>
2017 </div>
2018 <div class="chapter-level-extent" id="Other-Attributes">
2019 <div class="nav-panel">
2021 Next: <a href="#Key-Expiration" accesskey="n" rel="next">Key Expiration</a>, Previous: <a href="#Target-Attribute" accesskey="p" rel="prev">The <code class="code">target</code> attribute</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
2022 </div>
2023 <h2 class="chapter" id="Other-special-attributes"><span>12 Other special attributes<a class="copiable-link" href="#Other-special-attributes"> &para;</a></span></h2>
2024 <a class="index-entry-id" id="index-special-attributes"></a>
2025 <p>In addition to the <code class="code">_target</code> attribute (see <a class="pxref" href="#Target-Attribute">The <code class="code">target</code> attribute</a>), there
2026 are a few other attributes that are specially handled by <code class="command">pwmd</code>. The
2027 first is the <code class="code">_ctime</code> attribute which is set to the current time when an
2028 element is created. Next is the <code class="code">_mtime</code> attribute which is created when
2029 an element is created and also updated when an element is modified. Neither of
2030 these attributes may be modified by the client. The <code class="code">_acl</code> attribute
2031 controls access to the element, albeit modifying or accessing element content,
2032 or descending into child elements. See <a class="xref" href="#Access-Control">Access Control</a> for details. The
2033 <code class="code">_name</code> attribute contains the name of an element.
2034 </p>
2035 <p>The above mentioned attributes are considered reserved attribute names.
2036 Reserved attributes are treated specially when a <code class="code">_target</code> attribute is
2037 found for the current element. The <code class="code">ATTR LIST</code> command will show these
2038 attribute values for the current element and not the attribute values for the
2039 resolved <code class="code">_target</code> element. All other non-reserved attributes for the
2040 resolved <code class="code">_target</code> are appended to the <code class="code">ATTR LIST</code> command output.
2041 Other <code class="code">ATTR</code> commands (see <a class="pxref" href="#ATTR">Modifying element attributes.</a>) behave as usual. You can, for
2042 example, <code class="code">ATTR DELETE</code> a non-reserved attribute for an element that
2043 contains a <code class="code">_target</code> attribute. The resolved target elements&rsquo; attribute
2044 will be removed rather than the element containing the <code class="code">_target</code>
2045 attribute.
2046 </p>
2047 <p>Another specially handled attribute is the <code class="code">_expire</code> attribute. This
2048 attribute value, like the <code class="code">_ctime</code> and <code class="code">_mtime</code> attributes, is a
2049 timestamp. But this timestamp is usually in the future and for use with the
2050 <code class="code">GET</code> (see <a class="pxref" href="#GET">Getting the content of an element.</a>) and <code class="code">STORE</code> (see <a class="pxref" href="#STORE">Modifying the content of an element.</a>) commands. When the
2051 <code class="code">GET</code> command is issued, it checks for an <code class="code">_expire</code> attribute an
2052 compares its&rsquo; value with the current time. If the <code class="code">_expire</code> timestamp is
2053 in the past then a status message is sent (see <a class="pxref" href="#Status-Messages">Status messages and their meanings</a>) to inform
2054 the client that the element content should be updated. When the content for
2055 an element containing an <code class="code">_expire</code> attribute is set when using the
2056 <code class="code">STORE</code> command, the value of the <code class="code">_age</code> attribute is added to the
2057 current time and the <code class="code">_expire</code> attribute value is updated. When no
2058 <code class="code">_age</code> attribute is found, no modification is done of the <code class="code">_expire</code>
2059 attribute.
2060 </p>
2062 <hr>
2063 </div>
2064 <div class="chapter-level-extent" id="Key-Expiration">
2065 <div class="nav-panel">
2067 Next: <a href="#Signals" accesskey="n" rel="next">Recognized signals</a>, Previous: <a href="#Other-Attributes" accesskey="p" rel="prev">Other special attributes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
2068 </div>
2069 <h2 class="chapter" id="Key-Expiration-1"><span>13 Key Expiration<a class="copiable-link" href="#Key-Expiration-1"> &para;</a></span></h2>
2070 <a class="index-entry-id" id="index-key-expiration"></a>
2071 <p>When a key used for signing a data file has expired there is no indication
2072 until the next <code class="code">SAVE</code> command is sent. The command will fail since one
2073 cannot sign the data file with an expired key. The client will need to either
2074 use a different key for signing by either specifying an existing non-expired
2075 key, generate a new key, or change the expire time of the existing key with
2076 <code class="command">gpg</code>.
2077 </p>
2078 <p>To change the expiration of the currently used signing key with <code class="command">gpg</code>,
2079 use the <code class="code">KEYINFO</code> command (see <a class="pxref" href="#KEYINFO">Showing keys used for the current data file.</a>) to obtain the fingerprint of
2080 the signing key of the current data file, then change the expire time with
2081 <code class="command">gpg</code>:
2082 </p>
2083 <div class="example">
2084 <pre class="example-preformatted">gpg --homedir ~/.pwmd/.gnupg --edit-key &lt;fingerprint&gt;
2085 </pre></div>
2087 <p>Then use the <code class="code">expire</code> command to set the new key expire date. When
2088 finished, use the <code class="code">save</code> command to save your changes.
2089 </p>
2091 <hr>
2092 </div>
2093 <div class="chapter-level-extent" id="Signals">
2094 <div class="nav-panel">
2096 Next: <a href="#Index" accesskey="n" rel="next">Index</a>, Previous: <a href="#Key-Expiration" accesskey="p" rel="prev">Key Expiration</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
2097 </div>
2098 <h2 class="chapter" id="Recognized-signals"><span>14 Recognized signals<a class="copiable-link" href="#Recognized-signals"> &para;</a></span></h2>
2100 <p>Sending the <em class="emph">SIGHUP</em> signal to a <code class="command">pwmd</code> process will reload the
2101 configuration file and sending <em class="emph">SIGUSR1</em> will clear the entire file
2102 cache.
2103 </p>
2106 <hr>
2107 </div>
2108 <div class="unnumbered-level-extent" id="Index">
2109 <div class="nav-panel">
2111 Previous: <a href="#Signals" accesskey="p" rel="prev">Recognized signals</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Index" title="Index" rel="index">Index</a>]</p>
2112 </div>
2113 <h2 class="unnumbered" id="Index-1"><span>Index<a class="copiable-link" href="#Index-1"> &para;</a></span></h2>
2114 <div class="printindex cp-printindex">
2115 <table class="cp-letters-header-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Index_cp_letter-A"><b>A</b></a>
2116 &nbsp;
2117 <a class="summary-letter-printindex" href="#Index_cp_letter-B"><b>B</b></a>
2118 &nbsp;
2119 <a class="summary-letter-printindex" href="#Index_cp_letter-C"><b>C</b></a>
2120 &nbsp;
2121 <a class="summary-letter-printindex" href="#Index_cp_letter-D"><b>D</b></a>
2122 &nbsp;
2123 <a class="summary-letter-printindex" href="#Index_cp_letter-E"><b>E</b></a>
2124 &nbsp;
2125 <a class="summary-letter-printindex" href="#Index_cp_letter-G"><b>G</b></a>
2126 &nbsp;
2127 <a class="summary-letter-printindex" href="#Index_cp_letter-H"><b>H</b></a>
2128 &nbsp;
2129 <a class="summary-letter-printindex" href="#Index_cp_letter-I"><b>I</b></a>
2130 &nbsp;
2131 <a class="summary-letter-printindex" href="#Index_cp_letter-K"><b>K</b></a>
2132 &nbsp;
2133 <a class="summary-letter-printindex" href="#Index_cp_letter-L"><b>L</b></a>
2134 &nbsp;
2135 <a class="summary-letter-printindex" href="#Index_cp_letter-M"><b>M</b></a>
2136 &nbsp;
2137 <a class="summary-letter-printindex" href="#Index_cp_letter-N"><b>N</b></a>
2138 &nbsp;
2139 <a class="summary-letter-printindex" href="#Index_cp_letter-O"><b>O</b></a>
2140 &nbsp;
2141 <a class="summary-letter-printindex" href="#Index_cp_letter-P"><b>P</b></a>
2142 &nbsp;
2143 <a class="summary-letter-printindex" href="#Index_cp_letter-R"><b>R</b></a>
2144 &nbsp;
2145 <a class="summary-letter-printindex" href="#Index_cp_letter-S"><b>S</b></a>
2146 &nbsp;
2147 <a class="summary-letter-printindex" href="#Index_cp_letter-T"><b>T</b></a>
2148 &nbsp;
2149 <a class="summary-letter-printindex" href="#Index_cp_letter-U"><b>U</b></a>
2150 &nbsp;
2151 <a class="summary-letter-printindex" href="#Index_cp_letter-X"><b>X</b></a>
2152 &nbsp;
2153 </td></tr></table>
2154 <table class="cp-entries-printindex" border="0">
2155 <tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
2156 <tr><td colspan="3"><hr></td></tr>
2157 <tr><th id="Index_cp_letter-A">A</th></tr>
2158 <tr><td></td><td class="printindex-index-entry"><a href="#index-allowed">allowed</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2159 <tr><td></td><td class="printindex-index-entry"><a href="#index-allowed_005ffile">allowed_file</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2160 <tr><td></td><td class="printindex-index-entry"><a href="#index-always_005ftrust">always_trust</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2161 <tr><td></td><td class="printindex-index-entry"><a href="#index-Arguments">Arguments</a></td><td class="printindex-index-section"><a href="#Invoking">Invoking</a></td></tr>
2162 <tr><td></td><td class="printindex-index-entry"><a href="#index-ATTR-command">ATTR command</a></td><td class="printindex-index-section"><a href="#ATTR">ATTR</a></td></tr>
2163 <tr><td colspan="3"><hr></td></tr>
2164 <tr><th id="Index_cp_letter-B">B</th></tr>
2165 <tr><td></td><td class="printindex-index-entry"><a href="#index-backlog">backlog</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2166 <tr><td></td><td class="printindex-index-entry"><a href="#index-backup">backup</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2167 <tr><td></td><td class="printindex-index-entry"><a href="#index-BULK">BULK</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2168 <tr><td></td><td class="printindex-index-entry"><a href="#index-BULK-command">BULK command</a></td><td class="printindex-index-section"><a href="#BULK">BULK</a></td></tr>
2169 <tr><td colspan="3"><hr></td></tr>
2170 <tr><th id="Index_cp_letter-C">C</th></tr>
2171 <tr><td></td><td class="printindex-index-entry"><a href="#index-CACHE">CACHE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2172 <tr><td></td><td class="printindex-index-entry"><a href="#index-cache_005fpush">cache_push</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2173 <tr><td></td><td class="printindex-index-entry"><a href="#index-cache_005ftimeout">cache_timeout</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2174 <tr><td></td><td class="printindex-index-entry"><a href="#index-CACHETIMEOUT-command">CACHETIMEOUT command</a></td><td class="printindex-index-section"><a href="#CACHETIMEOUT">CACHETIMEOUT</a></td></tr>
2175 <tr><td></td><td class="printindex-index-entry"><a href="#index-CLEARCACHE-command">CLEARCACHE command</a></td><td class="printindex-index-section"><a href="#CLEARCACHE">CLEARCACHE</a></td></tr>
2176 <tr><td></td><td class="printindex-index-entry"><a href="#index-CLIENTS">CLIENTS</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2177 <tr><td></td><td class="printindex-index-entry"><a href="#index-COPY-command">COPY command</a></td><td class="printindex-index-section"><a href="#COPY">COPY</a></td></tr>
2178 <tr><td colspan="3"><hr></td></tr>
2179 <tr><th id="Index_cp_letter-D">D</th></tr>
2180 <tr><td></td><td class="printindex-index-entry"><a href="#index-Data-file-configuration-options">Data file configuration options</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2181 <tr><td></td><td class="printindex-index-entry"><a href="#index-DECRYPT">DECRYPT</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2182 <tr><td></td><td class="printindex-index-entry"><a href="#index-DELETE-command">DELETE command</a></td><td class="printindex-index-section"><a href="#DELETE">DELETE</a></td></tr>
2183 <tr><td></td><td class="printindex-index-entry"><a href="#index-DELETEKEY-command">DELETEKEY command</a></td><td class="printindex-index-section"><a href="#DELETEKEY">DELETEKEY</a></td></tr>
2184 <tr><td></td><td class="printindex-index-entry"><a href="#index-disable_005flist_005fand_005fdump">disable_list_and_dump</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2185 <tr><td></td><td class="printindex-index-entry"><a href="#index-disable_005fmlockall">disable_mlockall</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2186 <tr><td></td><td class="printindex-index-entry"><a href="#index-DUMP-command">DUMP command</a></td><td class="printindex-index-section"><a href="#DUMP">DUMP</a></td></tr>
2187 <tr><td colspan="3"><hr></td></tr>
2188 <tr><th id="Index_cp_letter-E">E</th></tr>
2189 <tr><td></td><td class="printindex-index-entry"><a href="#index-enable_005flogging">enable_logging</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2190 <tr><td></td><td class="printindex-index-entry"><a href="#index-enable_005ftcp">enable_tcp</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2191 <tr><td></td><td class="printindex-index-entry"><a href="#index-ENCRYPT">ENCRYPT</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2192 <tr><td></td><td class="printindex-index-entry"><a href="#index-encrypt_005fto">encrypt_to</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2193 <tr><td></td><td class="printindex-index-entry"><a href="#index-EXPIRE">EXPIRE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2194 <tr><td colspan="3"><hr></td></tr>
2195 <tr><th id="Index_cp_letter-G">G</th></tr>
2196 <tr><td></td><td class="printindex-index-entry"><a href="#index-GENKEY">GENKEY</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2197 <tr><td></td><td class="printindex-index-entry"><a href="#index-GENKEY-command">GENKEY command</a></td><td class="printindex-index-section"><a href="#GENKEY">GENKEY</a></td></tr>
2198 <tr><td></td><td class="printindex-index-entry"><a href="#index-GET-command">GET command</a></td><td class="printindex-index-section"><a href="#GET">GET</a></td></tr>
2199 <tr><td></td><td class="printindex-index-entry"><a href="#index-GETCONFIG-command">GETCONFIG command</a></td><td class="printindex-index-section"><a href="#GETCONFIG">GETCONFIG</a></td></tr>
2200 <tr><td></td><td class="printindex-index-entry"><a href="#index-GETINFO-command">GETINFO command</a></td><td class="printindex-index-section"><a href="#GETINFO">GETINFO</a></td></tr>
2201 <tr><td></td><td class="printindex-index-entry"><a href="#index-Getting-help">Getting help</a></td><td class="printindex-index-section"><a href="#Invoking">Invoking</a></td></tr>
2202 <tr><td></td><td class="printindex-index-entry"><a href="#index-Global-configuration-options">Global configuration options</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2203 <tr><td></td><td class="printindex-index-entry"><a href="#index-gpg_005fhomedir">gpg_homedir</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2204 <tr><td colspan="3"><hr></td></tr>
2205 <tr><th id="Index_cp_letter-H">H</th></tr>
2206 <tr><td></td><td class="printindex-index-entry"><a href="#index-HELP-command">HELP command</a></td><td class="printindex-index-section"><a href="#HELP">HELP</a></td></tr>
2207 <tr><td colspan="3"><hr></td></tr>
2208 <tr><th id="Index_cp_letter-I">I</th></tr>
2209 <tr><td></td><td class="printindex-index-entry"><a href="#index-IMPORT-command">IMPORT command</a></td><td class="printindex-index-section"><a href="#IMPORT">IMPORT</a></td></tr>
2210 <tr><td></td><td class="printindex-index-entry"><a href="#index-INQUIRE_005fMAXLEN">INQUIRE_MAXLEN</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2211 <tr><td></td><td class="printindex-index-entry"><a href="#index-invoking_005ffile">invoking_file</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2212 <tr><td></td><td class="printindex-index-entry"><a href="#index-invoking_005fuser">invoking_user</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2213 <tr><td></td><td class="printindex-index-entry"><a href="#index-ISCACHED-command">ISCACHED command</a></td><td class="printindex-index-section"><a href="#ISCACHED">ISCACHED</a></td></tr>
2214 <tr><td colspan="3"><hr></td></tr>
2215 <tr><th id="Index_cp_letter-K">K</th></tr>
2216 <tr><td></td><td class="printindex-index-entry"><a href="#index-KEEPALIVE">KEEPALIVE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2217 <tr><td></td><td class="printindex-index-entry"><a href="#index-keepalive_005finterval">keepalive_interval</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2218 <tr><td></td><td class="printindex-index-entry"><a href="#index-key-expiration">key expiration</a></td><td class="printindex-index-section"><a href="#Key-Expiration">Key Expiration</a></td></tr>
2219 <tr><td></td><td class="printindex-index-entry"><a href="#index-KEYINFO-command">KEYINFO command</a></td><td class="printindex-index-section"><a href="#KEYINFO">KEYINFO</a></td></tr>
2220 <tr><td></td><td class="printindex-index-entry"><a href="#index-KILL-command">KILL command</a></td><td class="printindex-index-section"><a href="#KILL">KILL</a></td></tr>
2221 <tr><td></td><td class="printindex-index-entry"><a href="#index-kill_005fscd">kill_scd</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2222 <tr><td colspan="3"><hr></td></tr>
2223 <tr><th id="Index_cp_letter-L">L</th></tr>
2224 <tr><td></td><td class="printindex-index-entry"><a href="#index-LIST-command">LIST command</a></td><td class="printindex-index-section"><a href="#LIST">LIST</a></td></tr>
2225 <tr><td></td><td class="printindex-index-entry"><a href="#index-LISTKEYS-command">LISTKEYS command</a></td><td class="printindex-index-section"><a href="#LISTKEYS">LISTKEYS</a></td></tr>
2226 <tr><td></td><td class="printindex-index-entry"><a href="#index-LOCK-command">LOCK command</a></td><td class="printindex-index-section"><a href="#LOCK">LOCK</a></td></tr>
2227 <tr><td></td><td class="printindex-index-entry"><a href="#index-lock_005ftimeout">lock_timeout</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2228 <tr><td></td><td class="printindex-index-entry"><a href="#index-LOCKED">LOCKED</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2229 <tr><td></td><td class="printindex-index-entry"><a href="#index-log_005fkeepopen">log_keepopen</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2230 <tr><td></td><td class="printindex-index-entry"><a href="#index-log_005flevel">log_level</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2231 <tr><td></td><td class="printindex-index-entry"><a href="#index-log_005fpath">log_path</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2232 <tr><td></td><td class="printindex-index-entry"><a href="#index-LS-command">LS command</a></td><td class="printindex-index-section"><a href="#LS">LS</a></td></tr>
2233 <tr><td colspan="3"><hr></td></tr>
2234 <tr><th id="Index_cp_letter-M">M</th></tr>
2235 <tr><td></td><td class="printindex-index-entry"><a href="#index-MODIFIED">MODIFIED</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2236 <tr><td></td><td class="printindex-index-entry"><a href="#index-MOVE-command">MOVE command</a></td><td class="printindex-index-section"><a href="#MOVE">MOVE</a></td></tr>
2237 <tr><td colspan="3"><hr></td></tr>
2238 <tr><th id="Index_cp_letter-N">N</th></tr>
2239 <tr><td></td><td class="printindex-index-entry"><a href="#index-NEWFILE">NEWFILE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2240 <tr><td></td><td class="printindex-index-entry"><a href="#index-NOP-command">NOP command</a></td><td class="printindex-index-section"><a href="#NOP">NOP</a></td></tr>
2241 <tr><td colspan="3"><hr></td></tr>
2242 <tr><th id="Index_cp_letter-O">O</th></tr>
2243 <tr><td></td><td class="printindex-index-entry"><a href="#index-OPEN-command">OPEN command</a></td><td class="printindex-index-section"><a href="#OPEN">OPEN</a></td></tr>
2244 <tr><td></td><td class="printindex-index-entry"><a href="#index-OPTION-command">OPTION command</a></td><td class="printindex-index-section"><a href="#OPTION">OPTION</a></td></tr>
2245 <tr><td></td><td class="printindex-index-entry"><a href="#index-Options">Options</a></td><td class="printindex-index-section"><a href="#Invoking">Invoking</a></td></tr>
2246 <tr><td colspan="3"><hr></td></tr>
2247 <tr><th id="Index_cp_letter-P">P</th></tr>
2248 <tr><td></td><td class="printindex-index-entry"><a href="#index-passphrase_005ffile">passphrase_file</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2249 <tr><td></td><td class="printindex-index-entry"><a href="#index-PASSPHRASE_005fHINT">PASSPHRASE_HINT</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2250 <tr><td></td><td class="printindex-index-entry"><a href="#index-PASSPHRASE_005fINFO">PASSPHRASE_INFO</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2251 <tr><td></td><td class="printindex-index-entry"><a href="#index-PASSWD-command">PASSWD command</a></td><td class="printindex-index-section"><a href="#PASSWD">PASSWD</a></td></tr>
2252 <tr><td></td><td class="printindex-index-entry"><a href="#index-priority">priority</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2253 <tr><td colspan="3"><hr></td></tr>
2254 <tr><th id="Index_cp_letter-R">R</th></tr>
2255 <tr><td></td><td class="printindex-index-entry"><a href="#index-REALPATH-command">REALPATH command</a></td><td class="printindex-index-section"><a href="#REALPATH">REALPATH</a></td></tr>
2256 <tr><td></td><td class="printindex-index-entry"><a href="#index-recursion_005fdepth">recursion_depth</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2257 <tr><td></td><td class="printindex-index-entry"><a href="#index-REHANDSHAKE">REHANDSHAKE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2258 <tr><td></td><td class="printindex-index-entry"><a href="#index-Reloading-the-configuration-file">Reloading the configuration file</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2259 <tr><td></td><td class="printindex-index-entry"><a href="#index-RENAME-command">RENAME command</a></td><td class="printindex-index-section"><a href="#RENAME">RENAME</a></td></tr>
2260 <tr><td></td><td class="printindex-index-entry"><a href="#index-require_005fsave_005fkey">require_save_key</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2261 <tr><td></td><td class="printindex-index-entry"><a href="#index-RESET-command">RESET command</a></td><td class="printindex-index-section"><a href="#RESET">RESET</a></td></tr>
2262 <tr><td></td><td class="printindex-index-entry"><a href="#index-Running-pwmd">Running <code class="command">pwmd</code></a></td><td class="printindex-index-section"><a href="#Invoking">Invoking</a></td></tr>
2263 <tr><td colspan="3"><hr></td></tr>
2264 <tr><th id="Index_cp_letter-S">S</th></tr>
2265 <tr><td></td><td class="printindex-index-entry"><a href="#index-SAVE-command">SAVE command</a></td><td class="printindex-index-section"><a href="#SAVE">SAVE</a></td></tr>
2266 <tr><td></td><td class="printindex-index-entry"><a href="#index-socket_005fpath">socket_path</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2267 <tr><td></td><td class="printindex-index-entry"><a href="#index-socket_005fperms">socket_perms</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2268 <tr><td></td><td class="printindex-index-entry"><a href="#index-special-attributes">special attributes</a></td><td class="printindex-index-section"><a href="#Other-Attributes">Other Attributes</a></td></tr>
2269 <tr><td></td><td class="printindex-index-entry"><a href="#index-STATE">STATE</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2270 <tr><td></td><td class="printindex-index-entry"><a href="#index-STORE-command">STORE command</a></td><td class="printindex-index-section"><a href="#STORE">STORE</a></td></tr>
2271 <tr><td></td><td class="printindex-index-entry"><a href="#index-strict_005fkill">strict_kill</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2272 <tr><td></td><td class="printindex-index-entry"><a href="#index-strict_005fopen">strict_open</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2273 <tr><td></td><td class="printindex-index-entry"><a href="#index-syslog">syslog</a></td><td class="printindex-index-section"><a href="#Configuration">Configuration</a></td></tr>
2274 <tr><td colspan="3"><hr></td></tr>
2275 <tr><th id="Index_cp_letter-T">T</th></tr>
2276 <tr><td></td><td class="printindex-index-entry"><a href="#index-target-attribute">target attribute</a></td><td class="printindex-index-section"><a href="#Target-Attribute">Target Attribute</a></td></tr>
2277 <tr><td></td><td class="printindex-index-entry"><a href="#index-tcp_005fbind">tcp_bind</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2278 <tr><td></td><td class="printindex-index-entry"><a href="#index-tcp_005finterface">tcp_interface</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2279 <tr><td></td><td class="printindex-index-entry"><a href="#index-tcp_005fport">tcp_port</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2280 <tr><td></td><td class="printindex-index-entry"><a href="#index-tcp_005frequire_005fkey">tcp_require_key</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2281 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fca_005ffile">tls_ca_file</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2282 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fcipher_005fsuite">tls_cipher_suite</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2283 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fcrl_005ffile">tls_crl_file</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2284 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fdh_005fparams_005ffile">tls_dh_params_file</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2285 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fserver_005fcert_005ffile">tls_server_cert_file</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2286 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fserver_005fkey_005ffile">tls_server_key_file</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2287 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005ftimeout">tls_timeout</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2288 <tr><td></td><td class="printindex-index-entry"><a href="#index-tls_005fuse_005fcrl">tls_use_crl</a></td><td class="printindex-index-section"><a href="#TLS">TLS</a></td></tr>
2289 <tr><td colspan="3"><hr></td></tr>
2290 <tr><th id="Index_cp_letter-U">U</th></tr>
2291 <tr><td></td><td class="printindex-index-entry"><a href="#index-UNLOCK-command">UNLOCK command</a></td><td class="printindex-index-section"><a href="#UNLOCK">UNLOCK</a></td></tr>
2292 <tr><td colspan="3"><hr></td></tr>
2293 <tr><th id="Index_cp_letter-X">X</th></tr>
2294 <tr><td></td><td class="printindex-index-entry"><a href="#index-XFER">XFER</a></td><td class="printindex-index-section"><a href="#Status-Messages">Status Messages</a></td></tr>
2295 <tr><td></td><td class="printindex-index-entry"><a href="#index-XPATH-command">XPATH command</a></td><td class="printindex-index-section"><a href="#XPATH">XPATH</a></td></tr>
2296 <tr><td></td><td class="printindex-index-entry"><a href="#index-XPATHATTR-command">XPATHATTR command</a></td><td class="printindex-index-section"><a href="#XPATHATTR">XPATHATTR</a></td></tr>
2297 <tr><td colspan="3"><hr></td></tr>
2298 </table>
2299 <table class="cp-letters-footer-printindex"><tr><th>Jump to: &nbsp; </th><td><a class="summary-letter-printindex" href="#Index_cp_letter-A"><b>A</b></a>
2300 &nbsp;
2301 <a class="summary-letter-printindex" href="#Index_cp_letter-B"><b>B</b></a>
2302 &nbsp;
2303 <a class="summary-letter-printindex" href="#Index_cp_letter-C"><b>C</b></a>
2304 &nbsp;
2305 <a class="summary-letter-printindex" href="#Index_cp_letter-D"><b>D</b></a>
2306 &nbsp;
2307 <a class="summary-letter-printindex" href="#Index_cp_letter-E"><b>E</b></a>
2308 &nbsp;
2309 <a class="summary-letter-printindex" href="#Index_cp_letter-G"><b>G</b></a>
2310 &nbsp;
2311 <a class="summary-letter-printindex" href="#Index_cp_letter-H"><b>H</b></a>
2312 &nbsp;
2313 <a class="summary-letter-printindex" href="#Index_cp_letter-I"><b>I</b></a>
2314 &nbsp;
2315 <a class="summary-letter-printindex" href="#Index_cp_letter-K"><b>K</b></a>
2316 &nbsp;
2317 <a class="summary-letter-printindex" href="#Index_cp_letter-L"><b>L</b></a>
2318 &nbsp;
2319 <a class="summary-letter-printindex" href="#Index_cp_letter-M"><b>M</b></a>
2320 &nbsp;
2321 <a class="summary-letter-printindex" href="#Index_cp_letter-N"><b>N</b></a>
2322 &nbsp;
2323 <a class="summary-letter-printindex" href="#Index_cp_letter-O"><b>O</b></a>
2324 &nbsp;
2325 <a class="summary-letter-printindex" href="#Index_cp_letter-P"><b>P</b></a>
2326 &nbsp;
2327 <a class="summary-letter-printindex" href="#Index_cp_letter-R"><b>R</b></a>
2328 &nbsp;
2329 <a class="summary-letter-printindex" href="#Index_cp_letter-S"><b>S</b></a>
2330 &nbsp;
2331 <a class="summary-letter-printindex" href="#Index_cp_letter-T"><b>T</b></a>
2332 &nbsp;
2333 <a class="summary-letter-printindex" href="#Index_cp_letter-U"><b>U</b></a>
2334 &nbsp;
2335 <a class="summary-letter-printindex" href="#Index_cp_letter-X"><b>X</b></a>
2336 &nbsp;
2337 </td></tr></table>
2338 </div>
2340 </div>
2341 </div>
2345 </body>
2346 </html>