=pod

=head1 NAME

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_get0_user_data, UI_get0_result, UI_process,
UI_ctrl, UI_set_default_method, UI_get_default_method, UI_get_method,
UI_set_method, UI_OpenSSL, ERR_load_UI_strings - New User Interface

=head1 SYNOPSIS

 #include <openssl/ui.h>

 typedef struct ui_st UI;
 typedef struct ui_method_st UI_METHOD;

 UI *UI_new(void);
 UI *UI_new_method(const UI_METHOD *method);
 void UI_free(UI *ui);

 int UI_add_input_string(UI *ui, const char *prompt, int flags,
	char *result_buf, int minsize, int maxsize);
 int UI_dup_input_string(UI *ui, const char *prompt, int flags,
	char *result_buf, int minsize, int maxsize);
 int UI_add_verify_string(UI *ui, const char *prompt, int flags,
	char *result_buf, int minsize, int maxsize, const char *test_buf);
 int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
	char *result_buf, int minsize, int maxsize, const char *test_buf);
 int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
	const char *ok_chars, const char *cancel_chars,
	int flags, char *result_buf);
 int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
	const char *ok_chars, const char *cancel_chars,
	int flags, char *result_buf);
 int UI_add_info_string(UI *ui, const char *text);
 int UI_dup_info_string(UI *ui, const char *text);
 int UI_add_error_string(UI *ui, const char *text);
 int UI_dup_error_string(UI *ui, const char *text);

 /* These are the possible flags.  They can be or'ed together. */
 #define UI_INPUT_FLAG_ECHO		0x01
 #define UI_INPUT_FLAG_DEFAULT_PWD	0x02

 char *UI_construct_prompt(UI *ui_method,
	const char *object_desc, const char *object_name);

 void *UI_add_user_data(UI *ui, void *user_data);
 void *UI_get0_user_data(UI *ui);

 const char *UI_get0_result(UI *ui, int i);

 int UI_process(UI *ui);

 int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)());
 #define UI_CTRL_PRINT_ERRORS		1
 #define UI_CTRL_IS_REDOABLE		2

 void UI_set_default_method(const UI_METHOD *meth);
 const UI_METHOD *UI_get_default_method(void);
 const UI_METHOD *UI_get_method(UI *ui);
 const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);

 UI_METHOD *UI_OpenSSL(void);

=head1 DESCRIPTION

UI stands for User Interface, and is general purpose set of routines to
prompt the user for text-based information.  Through user-written methods
(see L<ui_create(3)|ui_create(3)>), prompting can be done in any way
imaginable, be it plain text prompting, through dialog boxes or from a
cell phone.

All the functions work through a context of the type UI.  This context
contains all the information needed to prompt correctly as well as a
reference to a UI_METHOD, which is an ordered vector of functions that
carry out the actual prompting.

The first thing to do is to create a UI with UI_new() or UI_new_method(),
then add information to it with the UI_add or UI_dup functions.  Also,
user-defined random data can be passed down to the underlying method
through calls to UI_add_user_data.  The default UI method doesn't care
about these data, but other methods might.  Finally, use UI_process()
to actually perform the prompting and UI_get0_result() to find the result
to the prompt.

A UI can contain more than one prompt, which are performed in the given
sequence.  Each prompt gets an index number which is returned by the
UI_add and UI_dup functions, and has to be used to get the corresponding
result with UI_get0_result().

The functions are as follows:

UI_new() creates a new UI using the default UI method.  When done with
this UI, it should be freed using UI_free().

UI_new_method() creates a new UI using the given UI method.  When done with
this UI, it should be freed using UI_free().

UI_OpenSSL() returns the built-in UI method (note: not the default one,
since the default can be changed.  See further on).  This method is the
most machine/OS dependent part of OpenSSL and normally generates the
most problems when porting.

UI_free() removes a UI from memory, along with all other pieces of memory
that's connected to it, like duplicated input strings, results and others.

UI_add_input_string() and UI_add_verify_string() add a prompt to the UI,
as well as flags and a result buffer and the desired minimum and maximum
sizes of the result.  The given information is used to prompt for
information, for example a password, and to verify a password (i.e. having
the user enter it twice and check that the same string was entered twice).
UI_add_verify_string() takes and extra argument that should be a pointer
to the result buffer of the input string that it's supposed to verify, or
verification will fail.

UI_add_input_boolean() adds a prompt to the UI that's supposed to be answered
in a boolean way, with a single character for yes and a different character
for no.  A set of characters that can be used to cancel the prompt is given
as well.  The prompt itself is really divided in two, one part being the
descriptive text (given through the I<prompt> argument) and one describing
the possible answers (given through the I<action_desc> argument).

UI_add_info_string() and UI_add_error_string() add strings that are shown at
the same time as the prompt for extra information or to show an error string.
The difference between the two is only conceptual.  With the builtin method,
there's no technical difference between them.  Other methods may make a
difference between them, however.

The flags currently supported are UI_INPUT_FLAG_ECHO, which is relevant for
UI_add_input_string() and will have the users response be echoed (when
prompting for a password, this flag should obviously not be used, and
UI_INPUT_FLAG_DEFAULT_PWD, which means that a default password of some
sort will be used (completely depending on the application and the UI
method).

UI_dup_input_string(), UI_dup_verify_string(), UI_dup_input_boolean(),
UI_dup_info_string() and UI_dup_error_string() are basically the same
as their UI_add counterparts, except that they make their own copies
of all strings.

UI_construct_prompt() is a helper function that can be used to create
a prompt from two pieces of information: an description and a name.
The default constructor (if there is none provided by the method used)
creates a string "Enter I<description> for I<name>:".  With the
description "pass phrase" and the file name "foo.key", that becomes
"Enter pass phrase for foo.key:".  Other methods may create whatever
string and may include encodings that will be processed by the other
method functions.

UI_add_user_data() adds a piece of memory for the method to use at any
time.  The builtin UI method doesn't care about this info.  Note that several
calls to this function doesn't add data, it replaces the previous blob
with the one given as argument.

UI_get0_user_data() retrieves the data that has last been given to the
UI with UI_add_user_data().

UI_get0_result() returns a pointer to the result buffer associated with
the information indexed by I<i>.

UI_process() goes through the information given so far, does all the printing
and prompting and returns.

UI_ctrl() adds extra control for the application author.  For now, it
understands two commands: UI_CTRL_PRINT_ERRORS, which makes UI_process()
print the OpenSSL error stack as part of processing the UI, and
UI_CTRL_IS_REDOABLE, which returns a flag saying if the used UI can
be used again or not.

UI_set_default_method() changes the default UI method to the one given.

UI_get_default_method() returns a pointer to the current default UI method.

UI_get_method() returns the UI method associated with a given UI.

UI_set_method() changes the UI method associated with a given UI.

=head1 SEE ALSO

L<ui_create(3)|ui_create(3)>, L<ui_compat(3)|ui_compat(3)>

=head1 HISTORY

The UI section was first introduced in OpenSSL 0.9.7.

=head1 AUTHOR

Richard Levitte (richard@levitte.org) for the OpenSSL project
(http://www.openssl.org).

=cut
