static int ui_read(UI *ui, UI_STRING *uis) { switch (UI_get_string_type(uis)) { case UIT_PROMPT: { char result[PEM_BUFSIZE + 1]; const struct pem_password_cb_data *data = UI_method_get_ex_data(UI_get_method(ui), ui_method_data_index); int maxsize = UI_get_result_maxsize(uis); int len = data->cb(result, maxsize > PEM_BUFSIZE ? PEM_BUFSIZE : maxsize, data->rwflag, UI_get0_user_data(ui)); if (len >= 0) result[len] = '\0'; if (len <= 0) return len; if (UI_set_result_ex(ui, uis, result, len) >= 0) return 1; return 0; } case UIT_VERIFY: case UIT_NONE: case UIT_BOOLEAN: case UIT_INFO: case UIT_ERROR: break; } return 1; }
int UI_set_result(UI *ui, UI_STRING *uis, const char *result) { #if 0 /* * This is placed here solely to preserve UI_F_UI_SET_RESULT * To be removed for OpenSSL 1.2.0 */ UIerr(UI_F_UI_SET_RESULT, ERR_R_DISABLED); #endif return UI_set_result_ex(ui, uis, result, strlen(result)); }