File indexing completed on 2025-01-18 10:05:52
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #ifndef OPENSSL_UI_H
0016 # define OPENSSL_UI_H
0017 # pragma once
0018
0019 # include <openssl/macros.h>
0020 # ifndef OPENSSL_NO_DEPRECATED_3_0
0021 # define HEADER_UI_H
0022 # endif
0023
0024 # include <openssl/opensslconf.h>
0025
0026 # ifndef OPENSSL_NO_DEPRECATED_1_1_0
0027 # include <openssl/crypto.h>
0028 # endif
0029 # include <openssl/safestack.h>
0030 # include <openssl/pem.h>
0031 # include <openssl/types.h>
0032 # include <openssl/uierr.h>
0033
0034
0035 # ifndef OPENSSL_NO_DEPRECATED_3_0
0036 # ifdef OPENSSL_NO_UI_CONSOLE
0037 # define OPENSSL_NO_UI
0038 # endif
0039 # endif
0040
0041 # ifdef __cplusplus
0042 extern "C" {
0043 # endif
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053 UI *UI_new(void);
0054 UI *UI_new_method(const UI_METHOD *method);
0055 void UI_free(UI *ui);
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100 int UI_add_input_string(UI *ui, const char *prompt, int flags,
0101 char *result_buf, int minsize, int maxsize);
0102 int UI_dup_input_string(UI *ui, const char *prompt, int flags,
0103 char *result_buf, int minsize, int maxsize);
0104 int UI_add_verify_string(UI *ui, const char *prompt, int flags,
0105 char *result_buf, int minsize, int maxsize,
0106 const char *test_buf);
0107 int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
0108 char *result_buf, int minsize, int maxsize,
0109 const char *test_buf);
0110 int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
0111 const char *ok_chars, const char *cancel_chars,
0112 int flags, char *result_buf);
0113 int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
0114 const char *ok_chars, const char *cancel_chars,
0115 int flags, char *result_buf);
0116 int UI_add_info_string(UI *ui, const char *text);
0117 int UI_dup_info_string(UI *ui, const char *text);
0118 int UI_add_error_string(UI *ui, const char *text);
0119 int UI_dup_error_string(UI *ui, const char *text);
0120
0121
0122
0123 # define UI_INPUT_FLAG_ECHO 0x01
0124
0125
0126
0127
0128
0129
0130
0131 # define UI_INPUT_FLAG_DEFAULT_PWD 0x02
0132
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143 # define UI_INPUT_FLAG_USER_BASE 16
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164 char *UI_construct_prompt(UI *ui_method,
0165 const char *phrase_desc, const char *object_name);
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178 void *UI_add_user_data(UI *ui, void *user_data);
0179
0180
0181
0182
0183
0184 int UI_dup_user_data(UI *ui, void *user_data);
0185
0186 void *UI_get0_user_data(UI *ui);
0187
0188
0189 const char *UI_get0_result(UI *ui, int i);
0190 int UI_get_result_length(UI *ui, int i);
0191
0192
0193 int UI_process(UI *ui);
0194
0195
0196
0197
0198
0199
0200 int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void));
0201
0202
0203
0204
0205
0206
0207
0208 # define UI_CTRL_PRINT_ERRORS 1
0209
0210
0211
0212
0213
0214 # define UI_CTRL_IS_REDOABLE 2
0215
0216
0217 # define UI_set_app_data(s,arg) UI_set_ex_data(s,0,arg)
0218 # define UI_get_app_data(s) UI_get_ex_data(s,0)
0219
0220 # define UI_get_ex_new_index(l, p, newf, dupf, freef) \
0221 CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_UI, l, p, newf, dupf, freef)
0222 int UI_set_ex_data(UI *r, int idx, void *arg);
0223 void *UI_get_ex_data(const UI *r, int idx);
0224
0225
0226 void UI_set_default_method(const UI_METHOD *meth);
0227 const UI_METHOD *UI_get_default_method(void);
0228 const UI_METHOD *UI_get_method(UI *ui);
0229 const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
0230
0231 # ifndef OPENSSL_NO_UI_CONSOLE
0232
0233
0234 UI_METHOD *UI_OpenSSL(void);
0235
0236 # endif
0237
0238
0239
0240
0241
0242 const UI_METHOD *UI_null(void);
0243
0244
0245
0246
0247
0248
0249
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291 typedef struct ui_string_st UI_STRING;
0292
0293 SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING)
0294 #define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk))
0295 #define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx)))
0296 #define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp)))
0297 #define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null())
0298 #define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n)))
0299 #define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n))
0300 #define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk))
0301 #define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk))
0302 #define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i)))
0303 #define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)))
0304 #define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
0305 #define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
0306 #define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk)))
0307 #define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk)))
0308 #define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc))
0309 #define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx))
0310 #define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr)))
0311 #define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
0312 #define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))
0313 #define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum)
0314 #define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk))
0315 #define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk))
0316 #define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk)))
0317 #define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc)))
0318 #define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp)))
0319
0320
0321
0322
0323
0324
0325 enum UI_string_types {
0326 UIT_NONE = 0,
0327 UIT_PROMPT,
0328 UIT_VERIFY,
0329 UIT_BOOLEAN,
0330 UIT_INFO,
0331 UIT_ERROR
0332 };
0333
0334
0335 UI_METHOD *UI_create_method(const char *name);
0336 void UI_destroy_method(UI_METHOD *ui_method);
0337 int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui));
0338 int UI_method_set_writer(UI_METHOD *method,
0339 int (*writer) (UI *ui, UI_STRING *uis));
0340 int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui));
0341 int UI_method_set_reader(UI_METHOD *method,
0342 int (*reader) (UI *ui, UI_STRING *uis));
0343 int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui));
0344 int UI_method_set_data_duplicator(UI_METHOD *method,
0345 void *(*duplicator) (UI *ui, void *ui_data),
0346 void (*destructor)(UI *ui, void *ui_data));
0347 int UI_method_set_prompt_constructor(UI_METHOD *method,
0348 char *(*prompt_constructor) (UI *ui,
0349 const char
0350 *phrase_desc,
0351 const char
0352 *object_name));
0353 int UI_method_set_ex_data(UI_METHOD *method, int idx, void *data);
0354 int (*UI_method_get_opener(const UI_METHOD *method)) (UI *);
0355 int (*UI_method_get_writer(const UI_METHOD *method)) (UI *, UI_STRING *);
0356 int (*UI_method_get_flusher(const UI_METHOD *method)) (UI *);
0357 int (*UI_method_get_reader(const UI_METHOD *method)) (UI *, UI_STRING *);
0358 int (*UI_method_get_closer(const UI_METHOD *method)) (UI *);
0359 char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))
0360 (UI *, const char *, const char *);
0361 void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *);
0362 void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *);
0363 const void *UI_method_get_ex_data(const UI_METHOD *method, int idx);
0364
0365
0366
0367
0368
0369
0370
0371 enum UI_string_types UI_get_string_type(UI_STRING *uis);
0372
0373 int UI_get_input_flags(UI_STRING *uis);
0374
0375 const char *UI_get0_output_string(UI_STRING *uis);
0376
0377
0378
0379
0380 const char *UI_get0_action_string(UI_STRING *uis);
0381
0382 const char *UI_get0_result_string(UI_STRING *uis);
0383 int UI_get_result_string_length(UI_STRING *uis);
0384
0385
0386
0387 const char *UI_get0_test_string(UI_STRING *uis);
0388
0389 int UI_get_result_minsize(UI_STRING *uis);
0390
0391 int UI_get_result_maxsize(UI_STRING *uis);
0392
0393 int UI_set_result(UI *ui, UI_STRING *uis, const char *result);
0394 int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len);
0395
0396
0397 int UI_UTIL_read_pw_string(char *buf, int length, const char *prompt,
0398 int verify);
0399 int UI_UTIL_read_pw(char *buf, char *buff, int size, const char *prompt,
0400 int verify);
0401 UI_METHOD *UI_UTIL_wrap_read_pem_callback(pem_password_cb *cb, int rwflag);
0402
0403
0404 # ifdef __cplusplus
0405 }
0406 # endif
0407 #endif