Added a 'deb' Makefile target.
[libpwmd.git] / libpwmd.3.in
blob0dc9cc5a986aaecf4c6a9cfeccc4675eee6c3b74
1 .\" This program is free software; you can redistribute it and/or modify
2 .\" it under the terms of the GNU General Public License as published by
3 .\" the Free Software Foundation; either version 2 of the License, or
4 .\" (at your option) any later version.
5 .\" 
6 .\" This program is distributed in the hope that it will be useful,
7 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
8 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9 .\" GNU General Public License for more details.
10 .\" 
11 .\" You should have received a copy of the GNU General Public License
12 .\" along with this program; if not, write to the Free Software
13 .\" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
14 .de URL
15 \\$2 \(laURL: \\$1 \(ra\\$3
17 .if \n[.g] .mso www.tmac
18 .TH LIBPWMD 3 "12 Jul 2007" "Password Manager Daemon Library" "Password Manager Daemon Library"
19 .SH NAME
21 libpwmd \- pwmd client interface library
22 .SH SYNOPSIS
23 .nf
24 .B #include <libpwmd.h>
25 .sp
26 .BI "gpg_error_t pwmd_init(void);"
27 .BI "pwm_t *pwmd_connect(const char *" socket ", gpg_error_t *" error ");"
28 .BI "gpg_error_t pwmd_setopt(pwm_t *" pwm ", pwmd_option_t " opt ", ...);"
29 .BI "gpg_error_t pwmd_open(pwm_t *" pwm ", const char *" filename ");"
30 .BI "int pwmd_open_nb(pwm_t *" pwm ", gpg_error_t *" error ", const char *" filename ", int " timeout ");"
31 .BI "gpg_error_t pwmd_open_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
32 .BI "gpg_error_t pwmd_command(pwm_t *" pwm ", char **" result ", const char *" cmd ", " ... ");"
33 .BI "void pwmd_free_result(void *" result ");"
34 .BI "gpg_error_t pwmd_save(pwm_t *" pwm ");"
35 .BI "int pwmd_save_nb(pwm_t *" pwm ", gpg_error_t *" error ");"
36 .BI "gpg_error_t pwmd_save_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
37 .BI "gpg_error_t pwmd_terminate_pinentry(pwm_t *" pwm ");"
38 .BI "void pwmd_close(pwm_t *" pwm ");"
39 .BI "const char *pwmd_strerror(gpg_error_t " error ");"
41 .BI "typedef int (*" pwmd_status_fn ")(void *" data ", const char *" line ");"
42 .BI "typedef char *(*" pwmd_password_fn ")(pwm_t *" pwm ", void *" data ");"
43 .fi
44 .SH DESCRIPTION
45 .B libpwmd
46 is an library making it easy for applications to use
47 .BR pwmd (1).
49 .TP
50 .BI "gpg_error_t pwmd_init(void);"
51 Initializes \fBlibpwmd\fP, \fBlibassuan\fP, and \fBlibgpg-error\fP. Be sure to
52 call this before using the other functions.
54 .TP
55 .BI "pwm_t *pwmd_connect(const char *" socket ", gpg_error_t *" error ");"
56 Connects to the specified \fIsocket\fP. If \fIsocket\fP is NULL then a default
57 of \fI~/.pwmd/socket\fP will be used. If there is an error while connecting
58 \fIerror\fP is set to the error code of the failed function and NULL is
59 returned. When successful a handle is returned for use with the other library
60 functions.
62 .TP
63 .BI "gpg_error_t pwmd_setopt(pwm_t *" pwm ", pwmd_option_t " opt ", ...);"
64 Set the library option \fIopt\fP to the value of the next argument. Returns 0
65 on success or an error code. \fIopt\fP is one of the following:
66 .RS
67 .TP
68 .B PWMD_OPTION_PASSWORD_FUNC
69 Specifies a function to use to get a password. The next argument should be of
70 type \fIpwmd_password_fn\fP. The function should return a \fIchar
71 *\fP string which is the password or NULL if there is an
72 error.
73 .TP
74 .B PWMD_OPTION_PASSWORD_DATA
75 A user data pointer passed to the password function.
76 .TP
77 .B PWMD_OPTION_PINENTRY
78 Whether to use 
79 .BR pinentry (1)
80 to obtain the password when opening and saving a file on the server. The
81 following argument is an \fIint\fP and is \fI1\fP to enable
82 .BR pinentry (1)
83 use, and \fI0\fP to use the password which is set with
84 \fBPWMD_OPTION_PASSWORD\fP or \fBPWMD_OPTION_PASSWORD_FUNC\fP.
85 .TP
86 .B PWMD_OPTION_PINENTRY_TRIES
87 The next argument if type \fIint\fP specifies the number of invalid password
88 tries before
89 .BR pinentry (1)
90 gives up. Only \fBpwmd_open\fP() and \fBpwmd_open_nb\fP() will use this
91 option. \fBpwmd_save\fP() and \fBpwmd_save_nb\fP() will continue to confirm a
92 password until either a match is entered or Cancel is selected.
93 .TP
94 .B PWMD_OPTION_PINENTRY_TTY
95 .TP
96 .B PWMD_OPTION_PINENTRY_TERM
97 .TP
98 .B PWMD_OPTION_PINENTRY_DISPLAY
99 Sets the
100 .BR pinentry (1)
101 command line options. The next argument should be of type \fIchar *\fP. If not
102 set, then the current DISPLAY, if set, or tty will be used.
105 If the file \fI~/.pwmd/env\fP exists then values for the above settings will
106 read from this file. The format of the file is one NAME=VALUE per line where
107 NAME is one of TTY, TERM or DISPLAY. The value for an existing setting will be
108 updated to the value contained in the file.
111 .B PWMD_OPTION_PINENTRY_TITLE
113 .B PWMD_OPTION_PINENTRY_DESC
115 .B PWMD_OPTION_PINENTRY_PROMPT
116 Sets the strings used in the 
117 .BR pinentry (1)
118 program.
119 The next argument is of type \fIchar *\fP. If not defined then a default will
120 be used.
122 .B PWMD_OPTION_PASSWORD
123 Sets the password to use for opening and saving a file when
124 \fBPWMD_OPTION_PINENTRY\fP is \fI0\fP. The following argument is the password
125 and is of type \fIchar *\fP.
127 .B PWMD_OPTION_STATUS_FUNC
129 .B PWMD_OPTION_STATUS_DATA
130 Function to be called when 
131 .BR pwmd (1)
132 sends a status message. This function should return \fB0\fP on success or a
133 \fBgpg_error_t\fP on failure. The data passed to the function can be set with
134 \fBPWMD_OPTION_STATUS_DATA\fP. Status message lines are prefixed with a
135 keyword followed by a space then the message. Read the \fBlibassuan\fP
136 documentation for more information. 
141 .BI "gpg_error_t pwmd_open(pwm_t *" pwm ", const char *" filename ");"
142 Opens the specified \fIfilename\fP on the server. The password for the file is
143 gotten from one of the methods specified with \fBpwmd_setopt\fP().
144 An error code is returned on error or \fB0\fP on success.
147 .BI "int pwmd_open_nb(pwm_t *" pwm ", gpg_error_t *" error ", const char *" filename ", int " timeout ");"
148 This is a nonblocking way of obtaining the password from
149 .BR pinentry (1)
150 when opening a file on the server. When successful, it returns a file
151 descriptor that
152 .BR select (2)
153 can use. When ready,
154 .BR read (2)
155 should read a \fIpwmd_nb_status_t\fP and then call
156 \fBpwmd_open_nb_finalize\fP() to update the handle. If there is an error,
157 \fB-1\fP is returned and \fIerror\fP is set. If \fIfilename\fP is already
158 cached on the server or doesn't exist on the filesystem and the open
159 succeeded, \fB-2\fP is returned. The \fItimeout\fP argument is the number of
160 seconds until the pinentry process will terminate. If \fB0\fP, the default, no
161 timeout will be used. Note that \fBPWMD_OPTION_PINENTRY\fP must be set and
162 that if a timeout is specified then the child process will modify it's
163 \fBSIGALRM\fP handler.
166 .BI "gpg_error_t pwmd_open_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
167 For use with \fBpwmd_open_nb\fP(); it updates the handle \fIpwm\fP and closes
168 the file descriptor. This should be called right after the successful
169 .BR read (2)
170 of \fIstatus\fP from the file descriptor returned by \fBpwmd_open_nb\fP(). If
171 there was a protocol or
172 .BR pinentry (1)
173 error, an error code is returned. Otherwise \fB0\fP is returned.
176 .BI "gpg_error_t pwmd_command(pwm_t *" pwm ", char **" result ", const char *" cmd ", " ... ");"
177 Sends a protocol command to the server. The function returns \fB0\fP
178 when successful and stores the result of the command format string \fIcmd\fP
179 to \fIresult\fP. The result should be free'd with \fBpwmd_free_result\fP().
180 Protocol commands that don't have a result will set \fIresult\fP to NULL. If
181 an error occurs then an error code is returned. Note: the BYE protocol
182 command should not be sent here. Use \fBpwmd_close\fP() instead.
185 .BI "void pwmd_free_result(void *" result ");"
186 Deallocates the memory of \fBpwmd_command\fP() result. It is important to use
187 this function because
188 .B libpwmd
189 not only keeps track of all allocated memory used by other
190 .B libpwmd
191 functions, but also clears the memory contents for better security. Don't use
192 this to free your own allocated memory though.
195 .BI "gpg_error_t pwmd_save(pwm_t *" pwm ");"
196 Saves the changes to the file associated with the handle \fIpwm\fP. If not
197 called before \fBpwmd_close\fP() then any changes will be lost. If an error
198 occurs then an error code is returned. Otherwise \fB0\fP is returned.
201 .BI "int pwmd_save_nb(pwm_t *" pwm ", gpg_error_t *" error ");"
202 This is a nonblocking way of obtaining the password from
203 .BR pinentry (1)
204 when saving an opened file. When successful, a file descriptor is returned
205 that
206 .BR select (2)
207 can use. When ready
208 .BR read (2)
209 should read a \fIpwmd_nb_status_t\fP and then call
210 \fBpwmd_save_nb_finalize\fP() to update the handle. If there was an error,
211 \fB-1\fP is returned and \fIerror\fP is set. If the file is cached on the
212 server and the save succeeded, \fB-2\fP is returned. Note that
213 \fBPWMD_OPTION_PINENTRY\fP must be set.
216 .BI "gpg_error_t pwmd_save_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
217 For use with \fBpwmd_save_nb\fP(); it updates the handle \fIpwm\fP and closes
218 the file descriptor. This should be called right after the successful
219 .BR read (2)
220 of \fIstatus\fP from the file descriptor returned by \fBpwmd_save_nb\fP(). If
221 there was a protocol or
222 .BR pinentry (1)
223 error, an error code is returned. Otherwise \fB0\fP is returned.
226 .BI "gpg_error_t pwmd_terminate_pinentry(pwm_t *" pwm ");"
227 Terminates a
228 .BR pinentry (1)
229 process associated with the handle \fIpwm\fP. This may be useful if your
230 application wants to use a timeout for password entry but doesn't use
231 \fBpwmd_open_nb\fP(). Returns \fB0\fP on success or an error code on failure.
234 .BI "void pwmd_close(pwm_t *" pwm ");"
235 Closes the server connection and free's resources used by the handle
236 \fIpwm\fP.
239 .BI "const char *pwmd_strerror(gpg_error_t " error ");"
240 Returns a string describing the error code \fIerror\fP which was set from one
241 of the above functions.
243 .SH FILES
245 .B ~/.pwmd/socket
246 Default connecting socket.
248 .B ~/.pwmd/env
249 Optional file containing pinentry settings.
251 .B @prefix@/lib/pkgconfig/libpwmd.pc
253 .BR pkg-config (1)
254 metadata file.
256 .B @prefix@/include/libpwmd.h
257 Installed location of header file.
259 .SH AUTHOR
260 Ben Kibbey <bjk@luxsci.net>
262 .URL "http://bjk.sourceforge.net/pwmd/" "PWMD Homepage" .
264 .SH "SEE ALSO"
265 .BR pwmd (1),
266 .BR pinentry (1),
267 .BR pkg-config (1)
269 And the \fBlibassuan\fP
270 .BR info (1)
271 documentation.