motion-openssl 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +53 -0
  3. data/lib/OpenSSL/aes.h +149 -0
  4. data/lib/OpenSSL/asn1.h +1419 -0
  5. data/lib/OpenSSL/asn1_mac.h +579 -0
  6. data/lib/OpenSSL/asn1t.h +973 -0
  7. data/lib/OpenSSL/bio.h +879 -0
  8. data/lib/OpenSSL/blowfish.h +130 -0
  9. data/lib/OpenSSL/bn.h +939 -0
  10. data/lib/OpenSSL/buffer.h +125 -0
  11. data/lib/OpenSSL/camellia.h +132 -0
  12. data/lib/OpenSSL/cast.h +107 -0
  13. data/lib/OpenSSL/cmac.h +82 -0
  14. data/lib/OpenSSL/cms.h +555 -0
  15. data/lib/OpenSSL/comp.h +79 -0
  16. data/lib/OpenSSL/conf.h +267 -0
  17. data/lib/OpenSSL/conf_api.h +89 -0
  18. data/lib/OpenSSL/crypto.h +661 -0
  19. data/lib/OpenSSL/des.h +257 -0
  20. data/lib/OpenSSL/des_old.h +497 -0
  21. data/lib/OpenSSL/dh.h +392 -0
  22. data/lib/OpenSSL/dsa.h +332 -0
  23. data/lib/OpenSSL/dso.h +451 -0
  24. data/lib/OpenSSL/dtls1.h +272 -0
  25. data/lib/OpenSSL/e_os2.h +328 -0
  26. data/lib/OpenSSL/ebcdic.h +26 -0
  27. data/lib/OpenSSL/ec.h +1282 -0
  28. data/lib/OpenSSL/ecdh.h +134 -0
  29. data/lib/OpenSSL/ecdsa.h +335 -0
  30. data/lib/OpenSSL/engine.h +960 -0
  31. data/lib/OpenSSL/err.h +389 -0
  32. data/lib/OpenSSL/evp.h +1534 -0
  33. data/lib/OpenSSL/hmac.h +109 -0
  34. data/lib/OpenSSL/idea.h +105 -0
  35. data/lib/OpenSSL/krb5_asn.h +240 -0
  36. data/lib/OpenSSL/kssl.h +197 -0
  37. data/lib/OpenSSL/lhash.h +240 -0
  38. data/lib/OpenSSL/libcrypto-tvOS.a +0 -0
  39. data/lib/OpenSSL/libcrypto.a +0 -0
  40. data/lib/OpenSSL/libssl-tvOS.a +0 -0
  41. data/lib/OpenSSL/libssl.a +0 -0
  42. data/lib/OpenSSL/md4.h +119 -0
  43. data/lib/OpenSSL/md5.h +119 -0
  44. data/lib/OpenSSL/mdc2.h +94 -0
  45. data/lib/OpenSSL/modes.h +163 -0
  46. data/lib/OpenSSL/obj_mac.h +4194 -0
  47. data/lib/OpenSSL/objects.h +1143 -0
  48. data/lib/OpenSSL/ocsp.h +637 -0
  49. data/lib/OpenSSL/opensslconf.h +262 -0
  50. data/lib/OpenSSL/opensslv.h +97 -0
  51. data/lib/OpenSSL/ossl_typ.h +211 -0
  52. data/lib/OpenSSL/pem.h +615 -0
  53. data/lib/OpenSSL/pem2.h +70 -0
  54. data/lib/OpenSSL/pkcs12.h +342 -0
  55. data/lib/OpenSSL/pkcs7.h +481 -0
  56. data/lib/OpenSSL/pqueue.h +99 -0
  57. data/lib/OpenSSL/rand.h +150 -0
  58. data/lib/OpenSSL/rc2.h +103 -0
  59. data/lib/OpenSSL/rc4.h +88 -0
  60. data/lib/OpenSSL/ripemd.h +105 -0
  61. data/lib/OpenSSL/rsa.h +664 -0
  62. data/lib/OpenSSL/safestack.h +2672 -0
  63. data/lib/OpenSSL/seed.h +149 -0
  64. data/lib/OpenSSL/sha.h +214 -0
  65. data/lib/OpenSSL/srp.h +169 -0
  66. data/lib/OpenSSL/srtp.h +147 -0
  67. data/lib/OpenSSL/ssl.h +3168 -0
  68. data/lib/OpenSSL/ssl2.h +265 -0
  69. data/lib/OpenSSL/ssl23.h +84 -0
  70. data/lib/OpenSSL/ssl3.h +774 -0
  71. data/lib/OpenSSL/stack.h +107 -0
  72. data/lib/OpenSSL/symhacks.h +516 -0
  73. data/lib/OpenSSL/tls1.h +810 -0
  74. data/lib/OpenSSL/ts.h +862 -0
  75. data/lib/OpenSSL/txt_db.h +112 -0
  76. data/lib/OpenSSL/ui.h +415 -0
  77. data/lib/OpenSSL/ui_compat.h +88 -0
  78. data/lib/OpenSSL/whrlpool.h +41 -0
  79. data/lib/OpenSSL/x509.h +1327 -0
  80. data/lib/OpenSSL/x509_vfy.h +647 -0
  81. data/lib/OpenSSL/x509v3.h +1055 -0
  82. data/lib/motion-openssl.rb +8 -0
  83. data/lib/motion-openssl/hooks.rb +8 -0
  84. data/lib/motion-openssl/hooks/openssl.rb +20 -0
  85. data/lib/motion-openssl/version.rb +5 -0
  86. data/motion/openssl.rb +1 -0
  87. data/motion/openssl/random.rb +18 -0
  88. metadata +229 -0
@@ -0,0 +1,112 @@
1
+ /* crypto/txt_db/txt_db.h */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #ifndef HEADER_TXT_DB_H
60
+ # define HEADER_TXT_DB_H
61
+
62
+ # include <openssl/opensslconf.h>
63
+ # ifndef OPENSSL_NO_BIO
64
+ # include <openssl/bio.h>
65
+ # endif
66
+ # include <openssl/stack.h>
67
+ # include <openssl/lhash.h>
68
+
69
+ # define DB_ERROR_OK 0
70
+ # define DB_ERROR_MALLOC 1
71
+ # define DB_ERROR_INDEX_CLASH 2
72
+ # define DB_ERROR_INDEX_OUT_OF_RANGE 3
73
+ # define DB_ERROR_NO_INDEX 4
74
+ # define DB_ERROR_INSERT_INDEX_CLASH 5
75
+
76
+ #ifdef __cplusplus
77
+ extern "C" {
78
+ #endif
79
+
80
+ typedef OPENSSL_STRING *OPENSSL_PSTRING;
81
+ DECLARE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
82
+
83
+ typedef struct txt_db_st {
84
+ int num_fields;
85
+ STACK_OF(OPENSSL_PSTRING) *data;
86
+ LHASH_OF(OPENSSL_STRING) **index;
87
+ int (**qual) (OPENSSL_STRING *);
88
+ long error;
89
+ long arg1;
90
+ long arg2;
91
+ OPENSSL_STRING *arg_row;
92
+ } TXT_DB;
93
+
94
+ # ifndef OPENSSL_NO_BIO
95
+ TXT_DB *TXT_DB_read(BIO *in, int num);
96
+ long TXT_DB_write(BIO *out, TXT_DB *db);
97
+ # else
98
+ TXT_DB *TXT_DB_read(char *in, int num);
99
+ long TXT_DB_write(char *out, TXT_DB *db);
100
+ # endif
101
+ int TXT_DB_create_index(TXT_DB *db, int field, int (*qual) (OPENSSL_STRING *),
102
+ LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp);
103
+ void TXT_DB_free(TXT_DB *db);
104
+ OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx,
105
+ OPENSSL_STRING *value);
106
+ int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value);
107
+
108
+ #ifdef __cplusplus
109
+ }
110
+ #endif
111
+
112
+ #endif
@@ -0,0 +1,415 @@
1
+ /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
2
+ /*
3
+ * Written by Richard Levitte (richard@levitte.org) for the OpenSSL project
4
+ * 2001.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 2001 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * openssl-core@openssl.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #ifndef HEADER_UI_H
61
+ # define HEADER_UI_H
62
+
63
+ # ifndef OPENSSL_NO_DEPRECATED
64
+ # include <openssl/crypto.h>
65
+ # endif
66
+ # include <openssl/safestack.h>
67
+ # include <openssl/ossl_typ.h>
68
+
69
+ #ifdef __cplusplus
70
+ extern "C" {
71
+ #endif
72
+
73
+ /* Declared already in ossl_typ.h */
74
+ /* typedef struct ui_st UI; */
75
+ /* typedef struct ui_method_st UI_METHOD; */
76
+
77
+ /*
78
+ * All the following functions return -1 or NULL on error and in some cases
79
+ * (UI_process()) -2 if interrupted or in some other way cancelled. When
80
+ * everything is fine, they return 0, a positive value or a non-NULL pointer,
81
+ * all depending on their purpose.
82
+ */
83
+
84
+ /* Creators and destructor. */
85
+ UI *UI_new(void);
86
+ UI *UI_new_method(const UI_METHOD *method);
87
+ void UI_free(UI *ui);
88
+
89
+ /*-
90
+ The following functions are used to add strings to be printed and prompt
91
+ strings to prompt for data. The names are UI_{add,dup}_<function>_string
92
+ and UI_{add,dup}_input_boolean.
93
+
94
+ UI_{add,dup}_<function>_string have the following meanings:
95
+ add add a text or prompt string. The pointers given to these
96
+ functions are used verbatim, no copying is done.
97
+ dup make a copy of the text or prompt string, then add the copy
98
+ to the collection of strings in the user interface.
99
+ <function>
100
+ The function is a name for the functionality that the given
101
+ string shall be used for. It can be one of:
102
+ input use the string as data prompt.
103
+ verify use the string as verification prompt. This
104
+ is used to verify a previous input.
105
+ info use the string for informational output.
106
+ error use the string for error output.
107
+ Honestly, there's currently no difference between info and error for the
108
+ moment.
109
+
110
+ UI_{add,dup}_input_boolean have the same semantics for "add" and "dup",
111
+ and are typically used when one wants to prompt for a yes/no response.
112
+
113
+ All of the functions in this group take a UI and a prompt string.
114
+ The string input and verify addition functions also take a flag argument,
115
+ a buffer for the result to end up with, a minimum input size and a maximum
116
+ input size (the result buffer MUST be large enough to be able to contain
117
+ the maximum number of characters). Additionally, the verify addition
118
+ functions takes another buffer to compare the result against.
119
+ The boolean input functions take an action description string (which should
120
+ be safe to ignore if the expected user action is obvious, for example with
121
+ a dialog box with an OK button and a Cancel button), a string of acceptable
122
+ characters to mean OK and to mean Cancel. The two last strings are checked
123
+ to make sure they don't have common characters. Additionally, the same
124
+ flag argument as for the string input is taken, as well as a result buffer.
125
+ The result buffer is required to be at least one byte long. Depending on
126
+ the answer, the first character from the OK or the Cancel character strings
127
+ will be stored in the first byte of the result buffer. No NUL will be
128
+ added, so the result is *not* a string.
129
+
130
+ On success, the all return an index of the added information. That index
131
+ is usefull when retrieving results with UI_get0_result(). */
132
+ int UI_add_input_string(UI *ui, const char *prompt, int flags,
133
+ char *result_buf, int minsize, int maxsize);
134
+ int UI_dup_input_string(UI *ui, const char *prompt, int flags,
135
+ char *result_buf, int minsize, int maxsize);
136
+ int UI_add_verify_string(UI *ui, const char *prompt, int flags,
137
+ char *result_buf, int minsize, int maxsize,
138
+ const char *test_buf);
139
+ int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
140
+ char *result_buf, int minsize, int maxsize,
141
+ const char *test_buf);
142
+ int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
143
+ const char *ok_chars, const char *cancel_chars,
144
+ int flags, char *result_buf);
145
+ int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
146
+ const char *ok_chars, const char *cancel_chars,
147
+ int flags, char *result_buf);
148
+ int UI_add_info_string(UI *ui, const char *text);
149
+ int UI_dup_info_string(UI *ui, const char *text);
150
+ int UI_add_error_string(UI *ui, const char *text);
151
+ int UI_dup_error_string(UI *ui, const char *text);
152
+
153
+ /* These are the possible flags. They can be or'ed together. */
154
+ /* Use to have echoing of input */
155
+ # define UI_INPUT_FLAG_ECHO 0x01
156
+ /*
157
+ * Use a default password. Where that password is found is completely up to
158
+ * the application, it might for example be in the user data set with
159
+ * UI_add_user_data(). It is not recommended to have more than one input in
160
+ * each UI being marked with this flag, or the application might get
161
+ * confused.
162
+ */
163
+ # define UI_INPUT_FLAG_DEFAULT_PWD 0x02
164
+
165
+ /*-
166
+ * The user of these routines may want to define flags of their own. The core
167
+ * UI won't look at those, but will pass them on to the method routines. They
168
+ * must use higher bits so they don't get confused with the UI bits above.
169
+ * UI_INPUT_FLAG_USER_BASE tells which is the lowest bit to use. A good
170
+ * example of use is this:
171
+ *
172
+ * #define MY_UI_FLAG1 (0x01 << UI_INPUT_FLAG_USER_BASE)
173
+ *
174
+ */
175
+ # define UI_INPUT_FLAG_USER_BASE 16
176
+
177
+ /*-
178
+ * The following function helps construct a prompt. object_desc is a
179
+ * textual short description of the object, for example "pass phrase",
180
+ * and object_name is the name of the object (might be a card name or
181
+ * a file name.
182
+ * The returned string shall always be allocated on the heap with
183
+ * OPENSSL_malloc(), and need to be free'd with OPENSSL_free().
184
+ *
185
+ * If the ui_method doesn't contain a pointer to a user-defined prompt
186
+ * constructor, a default string is built, looking like this:
187
+ *
188
+ * "Enter {object_desc} for {object_name}:"
189
+ *
190
+ * So, if object_desc has the value "pass phrase" and object_name has
191
+ * the value "foo.key", the resulting string is:
192
+ *
193
+ * "Enter pass phrase for foo.key:"
194
+ */
195
+ char *UI_construct_prompt(UI *ui_method,
196
+ const char *object_desc, const char *object_name);
197
+
198
+ /*
199
+ * The following function is used to store a pointer to user-specific data.
200
+ * Any previous such pointer will be returned and replaced.
201
+ *
202
+ * For callback purposes, this function makes a lot more sense than using
203
+ * ex_data, since the latter requires that different parts of OpenSSL or
204
+ * applications share the same ex_data index.
205
+ *
206
+ * Note that the UI_OpenSSL() method completely ignores the user data. Other
207
+ * methods may not, however.
208
+ */
209
+ void *UI_add_user_data(UI *ui, void *user_data);
210
+ /* We need a user data retrieving function as well. */
211
+ void *UI_get0_user_data(UI *ui);
212
+
213
+ /* Return the result associated with a prompt given with the index i. */
214
+ const char *UI_get0_result(UI *ui, int i);
215
+
216
+ /* When all strings have been added, process the whole thing. */
217
+ int UI_process(UI *ui);
218
+
219
+ /*
220
+ * Give a user interface parametrised control commands. This can be used to
221
+ * send down an integer, a data pointer or a function pointer, as well as be
222
+ * used to get information from a UI.
223
+ */
224
+ int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void));
225
+
226
+ /* The commands */
227
+ /*
228
+ * Use UI_CONTROL_PRINT_ERRORS with the value 1 to have UI_process print the
229
+ * OpenSSL error stack before printing any info or added error messages and
230
+ * before any prompting.
231
+ */
232
+ # define UI_CTRL_PRINT_ERRORS 1
233
+ /*
234
+ * Check if a UI_process() is possible to do again with the same instance of
235
+ * a user interface. This makes UI_ctrl() return 1 if it is redoable, and 0
236
+ * if not.
237
+ */
238
+ # define UI_CTRL_IS_REDOABLE 2
239
+
240
+ /* Some methods may use extra data */
241
+ # define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg)
242
+ # define UI_get_app_data(s) UI_get_ex_data(s,0)
243
+ int UI_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
244
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
245
+ int UI_set_ex_data(UI *r, int idx, void *arg);
246
+ void *UI_get_ex_data(UI *r, int idx);
247
+
248
+ /* Use specific methods instead of the built-in one */
249
+ void UI_set_default_method(const UI_METHOD *meth);
250
+ const UI_METHOD *UI_get_default_method(void);
251
+ const UI_METHOD *UI_get_method(UI *ui);
252
+ const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
253
+
254
+ /* The method with all the built-in thingies */
255
+ UI_METHOD *UI_OpenSSL(void);
256
+
257
+ /* ---------- For method writers ---------- */
258
+ /*-
259
+ A method contains a number of functions that implement the low level
260
+ of the User Interface. The functions are:
261
+
262
+ an opener This function starts a session, maybe by opening
263
+ a channel to a tty, or by opening a window.
264
+ a writer This function is called to write a given string,
265
+ maybe to the tty, maybe as a field label in a
266
+ window.
267
+ a flusher This function is called to flush everything that
268
+ has been output so far. It can be used to actually
269
+ display a dialog box after it has been built.
270
+ a reader This function is called to read a given prompt,
271
+ maybe from the tty, maybe from a field in a
272
+ window. Note that it's called wth all string
273
+ structures, not only the prompt ones, so it must
274
+ check such things itself.
275
+ a closer This function closes the session, maybe by closing
276
+ the channel to the tty, or closing the window.
277
+
278
+ All these functions are expected to return:
279
+
280
+ 0 on error.
281
+ 1 on success.
282
+ -1 on out-of-band events, for example if some prompting has
283
+ been canceled (by pressing Ctrl-C, for example). This is
284
+ only checked when returned by the flusher or the reader.
285
+
286
+ The way this is used, the opener is first called, then the writer for all
287
+ strings, then the flusher, then the reader for all strings and finally the
288
+ closer. Note that if you want to prompt from a terminal or other command
289
+ line interface, the best is to have the reader also write the prompts
290
+ instead of having the writer do it. If you want to prompt from a dialog
291
+ box, the writer can be used to build up the contents of the box, and the
292
+ flusher to actually display the box and run the event loop until all data
293
+ has been given, after which the reader only grabs the given data and puts
294
+ them back into the UI strings.
295
+
296
+ All method functions take a UI as argument. Additionally, the writer and
297
+ the reader take a UI_STRING.
298
+ */
299
+
300
+ /*
301
+ * The UI_STRING type is the data structure that contains all the needed info
302
+ * about a string or a prompt, including test data for a verification prompt.
303
+ */
304
+ typedef struct ui_string_st UI_STRING;
305
+ DECLARE_STACK_OF(UI_STRING)
306
+
307
+ /*
308
+ * The different types of strings that are currently supported. This is only
309
+ * needed by method authors.
310
+ */
311
+ enum UI_string_types {
312
+ UIT_NONE = 0,
313
+ UIT_PROMPT, /* Prompt for a string */
314
+ UIT_VERIFY, /* Prompt for a string and verify */
315
+ UIT_BOOLEAN, /* Prompt for a yes/no response */
316
+ UIT_INFO, /* Send info to the user */
317
+ UIT_ERROR /* Send an error message to the user */
318
+ };
319
+
320
+ /* Create and manipulate methods */
321
+ UI_METHOD *UI_create_method(char *name);
322
+ void UI_destroy_method(UI_METHOD *ui_method);
323
+ int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui));
324
+ int UI_method_set_writer(UI_METHOD *method,
325
+ int (*writer) (UI *ui, UI_STRING *uis));
326
+ int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui));
327
+ int UI_method_set_reader(UI_METHOD *method,
328
+ int (*reader) (UI *ui, UI_STRING *uis));
329
+ int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui));
330
+ int UI_method_set_prompt_constructor(UI_METHOD *method,
331
+ char *(*prompt_constructor) (UI *ui,
332
+ const char
333
+ *object_desc,
334
+ const char
335
+ *object_name));
336
+ int (*UI_method_get_opener(UI_METHOD *method)) (UI *);
337
+ int (*UI_method_get_writer(UI_METHOD *method)) (UI *, UI_STRING *);
338
+ int (*UI_method_get_flusher(UI_METHOD *method)) (UI *);
339
+ int (*UI_method_get_reader(UI_METHOD *method)) (UI *, UI_STRING *);
340
+ int (*UI_method_get_closer(UI_METHOD *method)) (UI *);
341
+ char *(*UI_method_get_prompt_constructor(UI_METHOD *method)) (UI *,
342
+ const char *,
343
+ const char *);
344
+
345
+ /*
346
+ * The following functions are helpers for method writers to access relevant
347
+ * data from a UI_STRING.
348
+ */
349
+
350
+ /* Return type of the UI_STRING */
351
+ enum UI_string_types UI_get_string_type(UI_STRING *uis);
352
+ /* Return input flags of the UI_STRING */
353
+ int UI_get_input_flags(UI_STRING *uis);
354
+ /* Return the actual string to output (the prompt, info or error) */
355
+ const char *UI_get0_output_string(UI_STRING *uis);
356
+ /*
357
+ * Return the optional action string to output (the boolean promtp
358
+ * instruction)
359
+ */
360
+ const char *UI_get0_action_string(UI_STRING *uis);
361
+ /* Return the result of a prompt */
362
+ const char *UI_get0_result_string(UI_STRING *uis);
363
+ /*
364
+ * Return the string to test the result against. Only useful with verifies.
365
+ */
366
+ const char *UI_get0_test_string(UI_STRING *uis);
367
+ /* Return the required minimum size of the result */
368
+ int UI_get_result_minsize(UI_STRING *uis);
369
+ /* Return the required maximum size of the result */
370
+ int UI_get_result_maxsize(UI_STRING *uis);
371
+ /* Set the result of a UI_STRING. */
372
+ int UI_set_result(UI *ui, UI_STRING *uis, const char *result);
373
+
374
+ /* A couple of popular utility functions */
375
+ int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,
376
+ int verify);
377
+ int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt,
378
+ int verify);
379
+
380
+ /* BEGIN ERROR CODES */
381
+ /*
382
+ * The following lines are auto generated by the script mkerr.pl. Any changes
383
+ * made after this point may be overwritten when the script is next run.
384
+ */
385
+ void ERR_load_UI_strings(void);
386
+
387
+ /* Error codes for the UI functions. */
388
+
389
+ /* Function codes. */
390
+ # define UI_F_GENERAL_ALLOCATE_BOOLEAN 108
391
+ # define UI_F_GENERAL_ALLOCATE_PROMPT 109
392
+ # define UI_F_GENERAL_ALLOCATE_STRING 100
393
+ # define UI_F_UI_CTRL 111
394
+ # define UI_F_UI_DUP_ERROR_STRING 101
395
+ # define UI_F_UI_DUP_INFO_STRING 102
396
+ # define UI_F_UI_DUP_INPUT_BOOLEAN 110
397
+ # define UI_F_UI_DUP_INPUT_STRING 103
398
+ # define UI_F_UI_DUP_VERIFY_STRING 106
399
+ # define UI_F_UI_GET0_RESULT 107
400
+ # define UI_F_UI_NEW_METHOD 104
401
+ # define UI_F_UI_SET_RESULT 105
402
+
403
+ /* Reason codes. */
404
+ # define UI_R_COMMON_OK_AND_CANCEL_CHARACTERS 104
405
+ # define UI_R_INDEX_TOO_LARGE 102
406
+ # define UI_R_INDEX_TOO_SMALL 103
407
+ # define UI_R_NO_RESULT_BUFFER 105
408
+ # define UI_R_RESULT_TOO_LARGE 100
409
+ # define UI_R_RESULT_TOO_SMALL 101
410
+ # define UI_R_UNKNOWN_CONTROL_COMMAND 106
411
+
412
+ #ifdef __cplusplus
413
+ }
414
+ #endif
415
+ #endif