Removed the pwmd_error_t data type. Functions that returned this type
[libpwmd.git] / libpwmd.3.in
blobf79336049dc6365bed922df36bb45d4050079000
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 "11 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 libassuan and libgpg-error stuff. Be sure to call this before
52 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_TTY
87 .TP
88 .B PWMD_OPTION_PINENTRY_TERM
89 .TP
90 .B PWMD_OPTION_PINENTRY_DISPLAY
91 Sets the
92 .BR pinentry (1)
93 command line options. The next argument should be of type \fIchar *\fP. If not
94 set, then the current DISPLAY, if set, or tty will be used.
96 .RS
97 If the file \fI~/.pwmd/env\fP exists then values for the above settings will
98 read from this file. The format of the file is NAME=VALUE where NAME is one of
99 TTY, TERM or DISPLAY. The value for an existing setting will be updated to
100 the value contained in the file.
103 .B PWMD_OPTION_PINENTRY_TITLE
105 .B PWMD_OPTION_PINENTRY_DESC
107 .B PWMD_OPTION_PINENTRY_PROMPT
108 Sets the strings used in the 
109 .BR pinentry (1)
110 program.
111 The next argument is of type \fIchar *\fP. If not defined then a default will
112 be used.
114 .B PWMD_OPTION_PASSWORD
115 Sets the password to use for opening and saving a file when
116 \fBPWMD_OPTION_PINENTRY\fP is \fI0\fP. The following argument is the password
117 and is of type \fIchar *\fP.
119 .B PWMD_OPTION_STATUS_FUNC
121 .B PWMD_OPTION_STATUS_DATA
122 Function to be called when 
123 .BR pwmd (1)
124 sends a status message. This function should return \fB0\fP on success or a
125 \fBgpg_error_t\fP on failure. The data passed to the function can be set with
126 \fBPWMD_OPTION_STATUS_DATA\fP. At the moment,
127 .BR pwmd (1)
128 only send's status messages when opening or saving a file and configured to do
134 .BI "gpg_error_t pwmd_open(pwm_t *" pwm ", const char *" filename ");"
135 Opens the specified \fIfilename\fP on the server. The password for the file is
136 gotten from one of the methods specified with \fBpwmd_setopt\fP().
137 An error code is returned on error or 0 on success.
140 .BI "int pwmd_open_nb(pwm_t *" pwm ", gpg_error_t *" error ", const char *" filename ", int " timeout ");"
141 This is a nonblocking way of obtaining the password from
142 .BR pinentry (1)
143 when opening a file on the server. When successful, it returns a file
144 descriptor that
145 .BR select (2)
146 can use. When ready,
147 .BR read (2)
148 should read a \fIpwmd_nb_status_t\fP and then call
149 \fBpwmd_open_nb_finalize\fP() to update the handle. If there is an error,
150 \fB-1\fP is returned and \fIerror\fP is set. If \fIfilename\fP is already
151 cached on the server or doesn't exist on the filesystem and the open
152 succeeded, \fB-2\fP is returned. The \fItimeout\fP argument is the number of
153 seconds until the pinentry process will terminate. If \fB0\fP, the default, no
154 timeout will be used. Note that \fBPWMD_OPTION_PINENTRY\fP must be set and
155 that if a timeout is specified then the child process will modify it's
156 \fBSIGALRM\fP handler.
159 .BI "gpg_error_t pwmd_open_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
160 For use with \fBpwmd_open_nb\fP(); it updates the handle \fIpwm\fP and closes
161 the file descriptor. This should be called right after the successful
162 .BR read (2)
163 of \fIstatus\fP from the file descriptor returned by \fBpwmd_open_nb\fP(). If
164 there was a protocol or
165 .BR pinentry (1)
166 error, an error code is returned. Otherwise \fB0\fP is returned.
169 .BI "gpg_error_t pwmd_command(pwm_t *" pwm ", char **" result ", const char *" cmd ", " ... ");"
170 Sends a protocol command to the server. The function returns \fB0\fP
171 when successful and stores the result of the command format string \fIcmd\fP
172 to \fIresult\fP. The result should be free'd with \fBpwmd_free_result\fP().
173 Protocol commands that don't have a result will set \fIresult\fP to NULL. If
174 an error occurs then and error code is returned. Note: the BYE protocol
175 command should not be sent here. Use \fBpwmd_close\fP() instead.
178 .BI "void pwmd_free_result(void *" result ");"
179 Deallocates the memory of \fBpwmd_command\fP() result. It is important to use
180 this function because
181 .B libpwmd
182 not only keeps track of all allocated memory used by other
183 .B libpwmd
184 functions, but also clears the memory contents for better security. Don't use
185 this to free your own allocated memory though.
188 .BI "gpg_error_t pwmd_save(pwm_t *" pwm ");"
189 Saves the changes to the file associated with the handle \fIpwm\fP. If not
190 called before \fBpwmd_close\fP() then any changes will be lost. If an error
191 occurs then an error code is returned. Otherwise \fB0\fP is returned.
194 .BI "int pwmd_save_nb(pwm_t *" pwm ", gpg_error_t *" error ");"
195 This is a nonblocking way of obtaining the password from
196 .BR pinentry (1)
197 when saving an opened file. When successful, a file descriptor is returned
198 that
199 .BR select (2)
200 can use. When ready
201 .BR read (2)
202 should read a \fIpwmd_nb_status_t\fP and then call
203 \fBpwmd_save_nb_finalize\fP() to update the handle. If there was an error,
204 \fB-1\fP is returned and \fIerror\fP is set. If the file is cached on the
205 server and the save succeeded, \fB-2\fP is returned. Note that
206 \fBPWMD_OPTION_PINENTRY\fP must be set.
209 .BI "gpg_error_t pwmd_save_nb_finalize(pwm_t *" pwm ", pwmd_nb_status_t *" status ");"
210 For use with \fBpwmd_save_nb\fP(); it updates the handle \fIpwm\fP and closes
211 the file descriptor. This should be called right after the successful
212 .BR read (2)
213 of \fIstatus\fP from the file descriptor returned by \fBpwmd_save_nb\fP(). If
214 there was a protocol or
215 .BR pinentry (1)
216 error, an error code is returned. Otherwise \fB0\fP is returned.
219 .BI "gpg_error_t pwmd_terminate_pinentry(pwm_t *" pwm ");"
220 Terminates a
221 .BR pinentry (1)
222 process associated with the handle \fIpwm\fP. This may be useful if your
223 application wants to use a timeout for password entry but doesn't use
224 \fBpwmd_open_nb\fP(). Returns \fB0\fP on success or an error code on failure.
227 .BI "void pwmd_close(pwm_t *" pwm ");"
228 Closes the server connection and free's resources used by the handle
229 \fIpwm\fP.
232 .BI "const char *pwmd_strerror(gpg_error_t " error ");"
233 Returns a string describing the error code \fIerror\fP which was set from one
234 of the above functions.
236 .SH FILES
238 .B ~/.pwmd/socket
239 Default connecting socket.
241 .B ~/.pwmd/env
242 Optional file containing pinentry settings.
244 .B @prefix@/lib/pkgconfig/libpwmd.pc
246 .BR pkg-config (1)
247 metadata file.
249 .B @prefix@/include/libpwmd.h
250 Installed location of header file.
252 .SH AUTHOR
253 Ben Kibbey <bjk@luxsci.net>
255 .URL "http://bjk.sourceforge.net/pwmd/" "PWMD Homepage" .
257 .SH "SEE ALSO"
258 .BR pwmd (1),
259 .BR pinentry (1),
260 .BR pkg-config (1)