1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * project 2001.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 2001 The OpenSSL Project.  All rights reserved.
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the above copyright
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the documentation and/or other materials provided with the
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    distribution.
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    software must display the following acknowledgment:
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    endorse or promote products derived from this software without
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    prior written permission. For written permission, please contact
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    openssl-core@openssl.org.
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 5. Products derived from this software may not be called "OpenSSL"
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    nor may "OpenSSL" appear in their names without prior written
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    permission of the OpenSSL Project.
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 6. Redistributions of any form whatsoever must retain the following
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    acknowledgment:
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software developed by the OpenSSL Project
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OF THE POSSIBILITY OF SUCH DAMAGE.
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This product includes cryptographic software written by Eric Young
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * (eay@cryptsoft.com).  This product includes software written by Tim
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Hudson (tjh@cryptsoft.com).
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HEADER_UI_H
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define HEADER_UI_H
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_NO_DEPRECATED
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/crypto.h>
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/safestack.h>
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/ossl_typ.h>
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern "C" {
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Declared already in ossl_typ.h */
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* typedef struct ui_st UI; */
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* typedef struct ui_method_st UI_METHOD; */
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* All the following functions return -1 or NULL on error and in some cases
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   (UI_process()) -2 if interrupted or in some other way cancelled.
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   When everything is fine, they return 0, a positive value or a non-NULL
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   pointer, all depending on their purpose. */
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Creators and destructor.   */
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectUI *UI_new(void);
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectUI *UI_new_method(const UI_METHOD *method);
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid UI_free(UI *ui);
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following functions are used to add strings to be printed and prompt
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   strings to prompt for data.  The names are UI_{add,dup}_<function>_string
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and UI_{add,dup}_input_boolean.
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   UI_{add,dup}_<function>_string have the following meanings:
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	add	add a text or prompt string.  The pointers given to these
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		functions are used verbatim, no copying is done.
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	dup	make a copy of the text or prompt string, then add the copy
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		to the collection of strings in the user interface.
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	<function>
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		The function is a name for the functionality that the given
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		string shall be used for.  It can be one of:
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			input	use the string as data prompt.
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			verify	use the string as verification prompt.  This
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				is used to verify a previous input.
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			info	use the string for informational output.
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			error	use the string for error output.
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Honestly, there's currently no difference between info and error for the
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   moment.
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   UI_{add,dup}_input_boolean have the same semantics for "add" and "dup",
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and are typically used when one wants to prompt for a yes/no response.
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   All of the functions in this group take a UI and a prompt string.
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The string input and verify addition functions also take a flag argument,
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   a buffer for the result to end up with, a minimum input size and a maximum
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   input size (the result buffer MUST be large enough to be able to contain
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   the maximum number of characters).  Additionally, the verify addition
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   functions takes another buffer to compare the result against.
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The boolean input functions take an action description string (which should
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   be safe to ignore if the expected user action is obvious, for example with
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   a dialog box with an OK button and a Cancel button), a string of acceptable
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   characters to mean OK and to mean Cancel.  The two last strings are checked
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   to make sure they don't have common characters.  Additionally, the same
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   flag argument as for the string input is taken, as well as a result buffer.
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The result buffer is required to be at least one byte long.  Depending on
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   the answer, the first character from the OK or the Cancel character strings
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   will be stored in the first byte of the result buffer.  No NUL will be
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   added, so the result is *not* a string.
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   On success, the all return an index of the added information.  That index
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   is usefull when retrieving results with UI_get0_result(). */
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_add_input_string(UI *ui, const char *prompt, int flags,
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *result_buf, int minsize, int maxsize);
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_dup_input_string(UI *ui, const char *prompt, int flags,
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *result_buf, int minsize, int maxsize);
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_add_verify_string(UI *ui, const char *prompt, int flags,
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *result_buf, int minsize, int maxsize, const char *test_buf);
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_dup_verify_string(UI *ui, const char *prompt, int flags,
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *result_buf, int minsize, int maxsize, const char *test_buf);
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const char *ok_chars, const char *cancel_chars,
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int flags, char *result_buf);
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const char *ok_chars, const char *cancel_chars,
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int flags, char *result_buf);
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_add_info_string(UI *ui, const char *text);
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_dup_info_string(UI *ui, const char *text);
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_add_error_string(UI *ui, const char *text);
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_dup_error_string(UI *ui, const char *text);
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* These are the possible flags.  They can be or'ed together. */
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Use to have echoing of input */
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_INPUT_FLAG_ECHO		0x01
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Use a default password.  Where that password is found is completely
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   up to the application, it might for example be in the user data set
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   with UI_add_user_data().  It is not recommended to have more than
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   one input in each UI being marked with this flag, or the application
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   might get confused. */
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_INPUT_FLAG_DEFAULT_PWD	0x02
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The user of these routines may want to define flags of their own.  The core
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   UI won't look at those, but will pass them on to the method routines.  They
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   must use higher bits so they don't get confused with the UI bits above.
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use.  A good
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   example of use is this:
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	#define MY_UI_FLAG1	(0x01 << UI_INPUT_FLAG_USER_BASE)
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_INPUT_FLAG_USER_BASE	16
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following function helps construct a prompt.  object_desc is a
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   textual short description of the object, for example "pass phrase",
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   and object_name is the name of the object (might be a card name or
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   a file name.
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The returned string shall always be allocated on the heap with
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   OPENSSL_malloc(), and need to be free'd with OPENSSL_free().
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   If the ui_method doesn't contain a pointer to a user-defined prompt
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   constructor, a default string is built, looking like this:
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"Enter {object_desc} for {object_name}:"
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   So, if object_desc has the value "pass phrase" and object_name has
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   the value "foo.key", the resulting string is:
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	"Enter pass phrase for foo.key:"
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *UI_construct_prompt(UI *ui_method,
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	const char *object_desc, const char *object_name);
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following function is used to store a pointer to user-specific data.
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Any previous such pointer will be returned and replaced.
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   For callback purposes, this function makes a lot more sense than using
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   ex_data, since the latter requires that different parts of OpenSSL or
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   applications share the same ex_data index.
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Note that the UI_OpenSSL() method completely ignores the user data.
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   Other methods may not, however.  */
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *UI_add_user_data(UI *ui, void *user_data);
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* We need a user data retrieving function as well.  */
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *UI_get0_user_data(UI *ui);
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the result associated with a prompt given with the index i. */
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *UI_get0_result(UI *ui, int i);
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* When all strings have been added, process the whole thing. */
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_process(UI *ui);
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Give a user interface parametrised control commands.  This can be used to
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   send down an integer, a data pointer or a function pointer, as well as
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   be used to get information from a UI. */
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f)(void));
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The commands */
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   OpenSSL error stack before printing any info or added error messages and
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   before any prompting. */
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_CTRL_PRINT_ERRORS		1
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Check if a UI_process() is possible to do again with the same instance of
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   a user interface.  This makes UI_ctrl() return 1 if it is redoable, and 0
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   if not. */
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_CTRL_IS_REDOABLE		2
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Some methods may use extra data */
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_set_app_data(s,arg)         UI_set_ex_data(s,0,arg)
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_get_app_data(s)             UI_get_ex_data(s,0)
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_set_ex_data(UI *r,int idx,void *arg);
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid *UI_get_ex_data(UI *r, int idx);
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Use specific methods instead of the built-in one */
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid UI_set_default_method(const UI_METHOD *meth);
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst UI_METHOD *UI_get_default_method(void);
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst UI_METHOD *UI_get_method(UI *ui);
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The method with all the built-in thingies */
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectUI_METHOD *UI_OpenSSL(void);
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ---------- For method writers ---------- */
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A method contains a number of functions that implement the low level
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   of the User Interface.  The functions are:
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	an opener	This function starts a session, maybe by opening
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			a channel to a tty, or by opening a window.
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a writer	This function is called to write a given string,
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			maybe to the tty, maybe as a field label in a
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			window.
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a flusher	This function is called to flush everything that
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			has been output so far.  It can be used to actually
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			display a dialog box after it has been built.
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a reader	This function is called to read a given prompt,
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			maybe from the tty, maybe from a field in a
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			window.  Note that it's called wth all string
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			structures, not only the prompt ones, so it must
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			check such things itself.
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	a closer	This function closes the session, maybe by closing
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			the channel to the tty, or closing the window.
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   All these functions are expected to return:
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0	on error.
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	1	on success.
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	-1	on out-of-band events, for example if some prompting has
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		been canceled (by pressing Ctrl-C, for example).  This is
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		only checked when returned by the flusher or the reader.
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The way this is used, the opener is first called, then the writer for all
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   strings, then the flusher, then the reader for all strings and finally the
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   closer.  Note that if you want to prompt from a terminal or other command
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   line interface, the best is to have the reader also write the prompts
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   instead of having the writer do it.  If you want to prompt from a dialog
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   box, the writer can be used to build up the contents of the box, and the
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   flusher to actually display the box and run the event loop until all data
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   has been given, after which the reader only grabs the given data and puts
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   them back into the UI strings.
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   All method functions take a UI as argument.  Additionally, the writer and
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   the reader take a UI_STRING.
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The UI_STRING type is the data structure that contains all the needed info
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   about a string or a prompt, including test data for a verification prompt.
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef struct ui_string_st UI_STRING;
291221304ee937bc0910948a8be1320cb8cc4eb6d36Brian CarlstromDECLARE_STACK_OF(UI_STRING)
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The different types of strings that are currently supported.
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   This is only needed by method authors. */
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectenum UI_string_types
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_NONE=0,
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_PROMPT,		/* Prompt for a string */
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_VERIFY,		/* Prompt for a string and verify */
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_BOOLEAN,		/* Prompt for a yes/no response */
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_INFO,		/* Send info to the user */
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	UIT_ERROR		/* Send an error message to the user */
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	};
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Create and manipulate methods */
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectUI_METHOD *UI_create_method(char *name);
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid UI_destroy_method(UI_METHOD *ui_method);
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_method_set_opener(UI_METHOD *method, int (*opener)(UI *ui));
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_method_set_writer(UI_METHOD *method, int (*writer)(UI *ui, UI_STRING *uis));
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui));
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis));
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui));
313221304ee937bc0910948a8be1320cb8cc4eb6d36Brian Carlstromint UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name));
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint (*UI_method_get_opener(UI_METHOD *method))(UI*);
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*);
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint (*UI_method_get_flusher(UI_METHOD *method))(UI*);
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*);
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint (*UI_method_get_closer(UI_METHOD *method))(UI*);
319392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromchar * (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*);
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following functions are helpers for method writers to access relevant
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   data from a UI_STRING. */
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return type of the UI_STRING */
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectenum UI_string_types UI_get_string_type(UI_STRING *uis);
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return input flags of the UI_STRING */
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_get_input_flags(UI_STRING *uis);
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the actual string to output (the prompt, info or error) */
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *UI_get0_output_string(UI_STRING *uis);
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the optional action string to output (the boolean promtp instruction) */
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *UI_get0_action_string(UI_STRING *uis);
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the result of a prompt */
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *UI_get0_result_string(UI_STRING *uis);
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the string to test the result against.  Only useful with verifies. */
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectconst char *UI_get0_test_string(UI_STRING *uis);
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the required minimum size of the result */
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_get_result_minsize(UI_STRING *uis);
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Return the required maximum size of the result */
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_get_result_maxsize(UI_STRING *uis);
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Set the result of a UI_STRING. */
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_set_result(UI *ui, UI_STRING *uis, const char *result);
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* A couple of popular utility functions */
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_UTIL_read_pw_string(char *buf,int length,const char *prompt,int verify);
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint UI_UTIL_read_pw(char *buf,char *buff,int size,const char *prompt,int verify);
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* BEGIN ERROR CODES */
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following lines are auto generated by the script mkerr.pl. Any changes
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * made after this point may be overwritten when the script is next run.
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid ERR_load_UI_strings(void);
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Error codes for the UI functions. */
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Function codes. */
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_GENERAL_ALLOCATE_BOOLEAN			 108
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_GENERAL_ALLOCATE_PROMPT			 109
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_GENERAL_ALLOCATE_STRING			 100
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_CTRL					 111
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_DUP_ERROR_STRING			 101
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_DUP_INFO_STRING				 102
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_DUP_INPUT_BOOLEAN			 110
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_DUP_INPUT_STRING			 103
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_DUP_VERIFY_STRING			 106
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_GET0_RESULT				 107
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_NEW_METHOD				 104
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_F_UI_SET_RESULT				 105
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Reason codes. */
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS		 104
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_INDEX_TOO_LARGE				 102
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_INDEX_TOO_SMALL				 103
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_NO_RESULT_BUFFER				 105
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_RESULT_TOO_LARGE				 100
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_RESULT_TOO_SMALL				 101
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define UI_R_UNKNOWN_CONTROL_COMMAND			 106
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef  __cplusplus
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
384