]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/UI_new.3
Regen amd64 assembly files for OpenSSL 1.1.1.
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / UI_new.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "UI_NEW 3"
132 .TH UI_NEW 3 "2018-09-11" "1.1.1" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 UI, UI_new, UI_new_method, UI_free, UI_add_input_string, UI_dup_input_string, UI_add_verify_string, UI_dup_verify_string, UI_add_input_boolean, UI_dup_input_boolean, UI_add_info_string, UI_dup_info_string, UI_add_error_string, UI_dup_error_string, UI_construct_prompt, UI_add_user_data, UI_dup_user_data, UI_get0_user_data, UI_get0_result, UI_get_result_length, UI_process, UI_ctrl, UI_set_default_method, UI_get_default_method, UI_get_method, UI_set_method, UI_OpenSSL, UI_null \- user interface
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/ui.h>
143 \&
144 \& typedef struct ui_st UI;
145 \&
146 \& UI *UI_new(void);
147 \& UI *UI_new_method(const UI_METHOD *method);
148 \& void UI_free(UI *ui);
149 \&
150 \& int UI_add_input_string(UI *ui, const char *prompt, int flags,
151 \&                         char *result_buf, int minsize, int maxsize);
152 \& int UI_dup_input_string(UI *ui, const char *prompt, int flags,
153 \&                         char *result_buf, int minsize, int maxsize);
154 \& int UI_add_verify_string(UI *ui, const char *prompt, int flags,
155 \&                          char *result_buf, int minsize, int maxsize,
156 \&                          const char *test_buf);
157 \& int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
158 \&                          char *result_buf, int minsize, int maxsize,
159 \&                          const char *test_buf);
160 \& int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
161 \&                          const char *ok_chars, const char *cancel_chars,
162 \&                          int flags, char *result_buf);
163 \& int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
164 \&                          const char *ok_chars, const char *cancel_chars,
165 \&                          int flags, char *result_buf);
166 \& int UI_add_info_string(UI *ui, const char *text);
167 \& int UI_dup_info_string(UI *ui, const char *text);
168 \& int UI_add_error_string(UI *ui, const char *text);
169 \& int UI_dup_error_string(UI *ui, const char *text);
170 \&
171 \& char *UI_construct_prompt(UI *ui_method,
172 \&        const char *object_desc, const char *object_name);
173 \&
174 \& void *UI_add_user_data(UI *ui, void *user_data);
175 \& int UI_dup_user_data(UI *ui, void *user_data);
176 \& void *UI_get0_user_data(UI *ui);
177 \&
178 \& const char *UI_get0_result(UI *ui, int i);
179 \& int UI_get_result_length(UI *ui, int i);
180 \&
181 \& int UI_process(UI *ui);
182 \&
183 \& int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)());
184 \&
185 \& void UI_set_default_method(const UI_METHOD *meth);
186 \& const UI_METHOD *UI_get_default_method(void);
187 \& const UI_METHOD *UI_get_method(UI *ui);
188 \& const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
189 \&
190 \& UI_METHOD *UI_OpenSSL(void);
191 \& const UI_METHOD *UI_null(void);
192 .Ve
193 .SH "DESCRIPTION"
194 .IX Header "DESCRIPTION"
195 \&\s-1UI\s0 stands for User Interface, and is general purpose set of routines to
196 prompt the user for text-based information.  Through user-written methods
197 (see \fIUI_create_method\fR\|(3)), prompting can be done in any way
198 imaginable, be it plain text prompting, through dialog boxes or from a
199 cell phone.
200 .PP
201 All the functions work through a context of the type \s-1UI.\s0  This context
202 contains all the information needed to prompt correctly as well as a
203 reference to a \s-1UI_METHOD,\s0 which is an ordered vector of functions that
204 carry out the actual prompting.
205 .PP
206 The first thing to do is to create a \s-1UI\s0 with \fIUI_new()\fR or \fIUI_new_method()\fR,
207 then add information to it with the UI_add or UI_dup functions.  Also,
208 user-defined random data can be passed down to the underlying method
209 through calls to \fIUI_add_user_data()\fR or \fIUI_dup_user_data()\fR.  The default
210 \&\s-1UI\s0 method doesn't care about these data, but other methods might.  Finally,
211 use \fIUI_process()\fR to actually perform the prompting and \fIUI_get0_result()\fR
212 and \fIUI_get_result_length()\fR to find the result to the prompt and its length.
213 .PP
214 A \s-1UI\s0 can contain more than one prompt, which are performed in the given
215 sequence.  Each prompt gets an index number which is returned by the
216 UI_add and UI_dup functions, and has to be used to get the corresponding
217 result with \fIUI_get0_result()\fR and \fIUI_get_result_length()\fR.
218 .PP
219 \&\fIUI_process()\fR can be called more than once on the same \s-1UI,\s0 thereby allowing
220 a \s-1UI\s0 to have a long lifetime, but can just as well have a short lifetime.
221 .PP
222 The functions are as follows:
223 .PP
224 \&\fIUI_new()\fR creates a new \s-1UI\s0 using the default \s-1UI\s0 method.  When done with
225 this \s-1UI,\s0 it should be freed using \fIUI_free()\fR.
226 .PP
227 \&\fIUI_new_method()\fR creates a new \s-1UI\s0 using the given \s-1UI\s0 method.  When done with
228 this \s-1UI,\s0 it should be freed using \fIUI_free()\fR.
229 .PP
230 \&\fIUI_OpenSSL()\fR returns the built-in \s-1UI\s0 method (note: not necessarily the
231 default one, since the default can be changed.  See further on).  This
232 method is the most machine/OS dependent part of OpenSSL and normally
233 generates the most problems when porting.
234 .PP
235 \&\fIUI_null()\fR returns a \s-1UI\s0 method that does nothing.  Its use is to avoid
236 getting internal defaults for passed \s-1UI_METHOD\s0 pointers.
237 .PP
238 \&\fIUI_free()\fR removes a \s-1UI\s0 from memory, along with all other pieces of memory
239 that's connected to it, like duplicated input strings, results and others.
240 If \fBui\fR is \s-1NULL\s0 nothing is done.
241 .PP
242 \&\fIUI_add_input_string()\fR and \fIUI_add_verify_string()\fR add a prompt to the \s-1UI,\s0
243 as well as flags and a result buffer and the desired minimum and maximum
244 sizes of the result, not counting the final \s-1NUL\s0 character.  The given
245 information is used to prompt for information, for example a password,
246 and to verify a password (i.e. having the user enter it twice and check
247 that the same string was entered twice).  \fIUI_add_verify_string()\fR takes
248 and extra argument that should be a pointer to the result buffer of the
249 input string that it's supposed to verify, or verification will fail.
250 .PP
251 \&\fIUI_add_input_boolean()\fR adds a prompt to the \s-1UI\s0 that's supposed to be answered
252 in a boolean way, with a single character for yes and a different character
253 for no.  A set of characters that can be used to cancel the prompt is given
254 as well.  The prompt itself is divided in two, one part being the
255 descriptive text (given through the \fIprompt\fR argument) and one describing
256 the possible answers (given through the \fIaction_desc\fR argument).
257 .PP
258 \&\fIUI_add_info_string()\fR and \fIUI_add_error_string()\fR add strings that are shown at
259 the same time as the prompt for extra information or to show an error string.
260 The difference between the two is only conceptual.  With the builtin method,
261 there's no technical difference between them.  Other methods may make a
262 difference between them, however.
263 .PP
264 The flags currently supported are \fB\s-1UI_INPUT_FLAG_ECHO\s0\fR, which is relevant for
265 \&\fIUI_add_input_string()\fR and will have the users response be echoed (when
266 prompting for a password, this flag should obviously not be used, and
267 \&\fB\s-1UI_INPUT_FLAG_DEFAULT_PWD\s0\fR, which means that a default password of some
268 sort will be used (completely depending on the application and the \s-1UI\s0
269 method).
270 .PP
271 \&\fIUI_dup_input_string()\fR, \fIUI_dup_verify_string()\fR, \fIUI_dup_input_boolean()\fR,
272 \&\fIUI_dup_info_string()\fR and \fIUI_dup_error_string()\fR are basically the same
273 as their UI_add counterparts, except that they make their own copies
274 of all strings.
275 .PP
276 \&\fIUI_construct_prompt()\fR is a helper function that can be used to create
277 a prompt from two pieces of information: an description and a name.
278 The default constructor (if there is none provided by the method used)
279 creates a string "Enter \fIdescription\fR for \fIname\fR:\*(L".  With the
280 description \*(R"pass phrase\*(L" and the file name \*(R"foo.key\*(L", that becomes
281 \&\*(R"Enter pass phrase for foo.key:".  Other methods may create whatever
282 string and may include encodings that will be processed by the other
283 method functions.
284 .PP
285 \&\fIUI_add_user_data()\fR adds a user data pointer for the method to use at any
286 time.  The builtin \s-1UI\s0 method doesn't care about this info.  Note that several
287 calls to this function doesn't add data, it replaces the previous blob
288 with the one given as argument.
289 .PP
290 \&\fIUI_dup_user_data()\fR duplicates the user data and works as an alternative
291 to \fIUI_add_user_data()\fR when the user data needs to be preserved for a longer
292 duration, perhaps even the lifetime of the application.  The \s-1UI\s0 object takes
293 ownership of this duplicate and will free it whenever it gets replaced or
294 the \s-1UI\s0 is destroyed.  \fIUI_dup_user_data()\fR returns 0 on success, or \-1 on memory
295 allocation failure or if the method doesn't have a duplicator function.
296 .PP
297 \&\fIUI_get0_user_data()\fR retrieves the data that has last been given to the
298 \&\s-1UI\s0 with \fIUI_add_user_data()\fR or UI_dup_user_data.
299 .PP
300 \&\fIUI_get0_result()\fR returns a pointer to the result buffer associated with
301 the information indexed by \fIi\fR.
302 .PP
303 \&\fIUI_get_result_length()\fR returns the length of the result buffer associated with
304 the information indexed by \fIi\fR.
305 .PP
306 \&\fIUI_process()\fR goes through the information given so far, does all the printing
307 and prompting and returns the final status, which is \-2 on out-of-band events
308 (Interrupt, Cancel, ...), \-1 on error and 0 on success.
309 .PP
310 \&\fIUI_ctrl()\fR adds extra control for the application author.  For now, it
311 understands two commands: \fB\s-1UI_CTRL_PRINT_ERRORS\s0\fR, which makes \fIUI_process()\fR
312 print the OpenSSL error stack as part of processing the \s-1UI,\s0 and
313 \&\fB\s-1UI_CTRL_IS_REDOABLE\s0\fR, which returns a flag saying if the used \s-1UI\s0 can
314 be used again or not.
315 .PP
316 \&\fIUI_set_default_method()\fR changes the default \s-1UI\s0 method to the one given.
317 This function is not thread-safe and should not be called at the same time
318 as other OpenSSL functions.
319 .PP
320 \&\fIUI_get_default_method()\fR returns a pointer to the current default \s-1UI\s0 method.
321 .PP
322 \&\fIUI_get_method()\fR returns the \s-1UI\s0 method associated with a given \s-1UI.\s0
323 .PP
324 \&\fIUI_set_method()\fR changes the \s-1UI\s0 method associated with a given \s-1UI.\s0
325 .SH "NOTES"
326 .IX Header "NOTES"
327 The resulting strings that the built in method \fIUI_OpenSSL()\fR generate
328 are assumed to be encoded according to the current locale or (for
329 Windows) code page.
330 For applications having different demands, these strings need to be
331 converted appropriately by the caller.
332 For Windows, if the \s-1OPENSSL_WIN32_UTF8\s0 environment variable is set,
333 the built-in method \fIUI_OpenSSL()\fR will produce \s-1UTF\-8\s0 encoded strings
334 instead.
335 .SH "RETURN VALUES"
336 .IX Header "RETURN VALUES"
337 \&\fIUI_new()\fR and \fIUI_new_method()\fR return a valid \fB\s-1UI\s0\fR structure or \s-1NULL\s0 if an error
338 occurred.
339 .PP
340 \&\fIUI_add_input_string()\fR, \fIUI_dup_input_string()\fR, \fIUI_add_verify_string()\fR,
341 \&\fIUI_dup_verify_string()\fR, \fIUI_add_input_boolean()\fR, \fIUI_dup_input_boolean()\fR,
342 \&\fIUI_add_info_string()\fR, \fIUI_dup_info_string()\fR, \fIUI_add_error_string()\fR
343 and \fIUI_dup_error_string()\fR return a positive number on success or a value which
344 is less than or equal to 0 otherwise.
345 .PP
346 \&\fIUI_construct_prompt()\fR returns a string or \s-1NULL\s0 if an error occurred.
347 .PP
348 \&\fIUI_dup_user_data()\fR returns 0 on success or \-1 on error.
349 .PP
350 \&\fIUI_get0_result()\fR returns a string or \s-1NULL\s0 on error.
351 .PP
352 \&\fIUI_get_result_length()\fR returns a positive integer or 0 on success; otherwise it
353 returns \-1 on error.
354 .PP
355 \&\fIUI_process()\fR returns 0 on success or a negative value on error.
356 .PP
357 \&\fIUI_ctrl()\fR returns a mask on success or \-1 on error.
358 .PP
359 \&\fIUI_get_default_method()\fR, \fIUI_get_method()\fR, \fIUI_Openssl()\fR, \fIUI_null()\fR and
360 \&\fIUI_set_method()\fR return either a valid \fB\s-1UI_METHOD\s0\fR structure or \s-1NULL\s0
361 respectively.
362 .SH "HISTORY"
363 .IX Header "HISTORY"
364 \&\fIUI_dup_user_data()\fR
365 was added in OpenSSL 1.1.1.
366 .SH "COPYRIGHT"
367 .IX Header "COPYRIGHT"
368 Copyright 2001\-2018 The OpenSSL Project Authors. All Rights Reserved.
369 .PP
370 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
371 this file except in compliance with the License.  You can obtain a copy
372 in the file \s-1LICENSE\s0 in the source distribution or at
373 <https://www.openssl.org/source/license.html>.