Commit 923b1857 authored by Richard Levitte's avatar Richard Levitte
Browse files

Fix "no-ui" configuration

parent 4de9913b
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -266,6 +266,7 @@ int dump_cert_text(BIO *out, X509 *x)
    return 0;
}

#ifndef OPENSSL_NO_UI
static int ui_open(UI *ui)
{
    return UI_method_get_opener(UI_OpenSSL())(ui);
@@ -335,20 +336,25 @@ void destroy_ui_method(void)
        ui_method = NULL;
    }
}
#endif

int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_tmp)
{
    UI *ui = NULL;
    int res = 0;
#ifndef OPENSSL_NO_UI
    UI *ui = NULL;
    const char *prompt_info = NULL;
#endif
    const char *password = NULL;
    PW_CB_DATA *cb_data = (PW_CB_DATA *)cb_tmp;

    if (cb_data) {
        if (cb_data->password)
            password = cb_data->password;
#ifndef OPENSSL_NO_UI
        if (cb_data->prompt_info)
            prompt_info = cb_data->prompt_info;
#endif
    }

    if (password) {
@@ -359,6 +365,7 @@ int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_tmp)
        return res;
    }

#ifndef OPENSSL_NO_UI
    ui = UI_new_method(ui_method);
    if (ui) {
        int ok = 0;
@@ -408,6 +415,7 @@ int password_callback(char *buf, int bufsiz, int verify, PW_CB_DATA *cb_tmp)
        UI_free(ui);
        OPENSSL_free(prompt);
    }
#endif
    return res;
}

+24 −17
Original line number Diff line number Diff line
@@ -347,6 +347,8 @@ int enc_main(int argc, char **argv)
    }

    if ((str == NULL) && (cipher != NULL) && (hkey == NULL)) {
        if (1) {
#ifndef OPENSSL_NO_UI
            for (;;) {
                char prompt[200];

@@ -368,6 +370,11 @@ int enc_main(int argc, char **argv)
                    goto end;
                }
            }
        } else {
#endif
            BIO_printf(bio_err, "password required\n");
            goto end;
        }
    }

    out = bio_open_default(outfile, 'w', outformat);
+4 −0
Original line number Diff line number Diff line
@@ -176,14 +176,18 @@ static int apps_startup()
                             | OPENSSL_INIT_LOAD_CONFIG, NULL))
        return 0;

#ifndef OPENSSL_NO_UI
    setup_ui_method();
#endif

    return 1;
}

static void apps_shutdown()
{
#ifndef OPENSSL_NO_UI
    destroy_ui_method();
#endif
}

static char *make_config_name()
+24 −11
Original line number Diff line number Diff line
@@ -118,7 +118,10 @@ int passwd_main(int argc, char **argv)
    char *infile = NULL, *salt = NULL, *passwd = NULL, **passwds = NULL;
    char *salt_malloc = NULL, *passwd_malloc = NULL, *prog;
    OPTION_CHOICE o;
    int in_stdin = 0, in_noverify = 0, pw_source_defined = 0;
    int in_stdin = 0, pw_source_defined = 0;
#ifndef OPENSSL_NO_UI
    int in_noverify = 0;
#endif
    int passed_salt = 0, quiet = 0, table = 0, reverse = 0;
    int ret = 1, usecrypt = 0, use1 = 0, useapr1 = 0;
    size_t passwd_malloc_size = 0, pw_maxlen = 256;
@@ -142,7 +145,9 @@ int passwd_main(int argc, char **argv)
            pw_source_defined = 1;
            break;
        case OPT_NOVERIFY:
#ifndef OPENSSL_NO_UI
            in_noverify = 1;
#endif
            break;
        case OPT_QUIET:
            quiet = 1;
@@ -232,6 +237,8 @@ int passwd_main(int argc, char **argv)
    }

    if ((in == NULL) && (passwds == NULL)) {
        if (1) {
#ifndef OPENSSL_NO_UI
            /* build a null-terminated list */
            static char *passwds_static[2] = { NULL, NULL };

@@ -242,8 +249,14 @@ int passwd_main(int argc, char **argv)
                     !(passed_salt || in_noverify)) != 0)
                    goto end;
            passwds[0] = passwd_malloc;
        } else {
#endif
            BIO_printf(bio_err, "password required\n");
            goto end;
        }
    }


    if (in == NULL) {
        assert(passwds != NULL);
        assert(*passwds != NULL);
+39 −14
Original line number Diff line number Diff line
@@ -176,7 +176,8 @@ int pkcs12_main(int argc, char **argv)
    int cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
# endif
    int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
    int ret = 1, macver = 1, noprompt = 0, add_lmk = 0, private = 0;
    int ret = 1, macver = 1, add_lmk = 0, private = 0;
    int noprompt = 0;
    char *passinarg = NULL, *passoutarg = NULL, *passarg = NULL;
    char *passin = NULL, *passout = NULL, *inrand = NULL, *macalg = NULL;
    char *cpass = NULL, *mpass = NULL, *CApath = NULL, *CAfile = NULL;
@@ -367,11 +368,18 @@ int pkcs12_main(int argc, char **argv)
    }

    if (twopass) {
        if (1) {
#ifndef OPENSSL_NO_UI
            if (EVP_read_pw_string
                (macpass, sizeof macpass, "Enter MAC Password:", export_cert)) {
                BIO_printf(bio_err, "Can't read Password\n");
                goto end;
            }
        } else {
#endif
            BIO_printf(bio_err, "Unsupported option -twopass\n");
            goto end;
        }
    }

    if (export_cert) {
@@ -477,12 +485,21 @@ int pkcs12_main(int argc, char **argv)
        if (add_lmk && key)
            EVP_PKEY_add1_attr_by_NID(key, NID_LocalKeySet, 0, NULL, -1);

        if (!noprompt &&
            EVP_read_pw_string(pass, sizeof pass, "Enter Export Password:",
        if (!noprompt) {
            if (1) {
#ifndef OPENSSL_NO_UI
                if (EVP_read_pw_string(pass, sizeof pass, "Enter Export Password:",
                                       1)) {
                    BIO_printf(bio_err, "Can't read Password\n");
                    goto export_end;
                }
            } else {
#endif
                BIO_printf(bio_err, "Password required\n");
                goto export_end;
            }
        }

        if (!twopass)
            OPENSSL_strlcpy(macpass, pass, sizeof macpass);

@@ -534,12 +551,20 @@ int pkcs12_main(int argc, char **argv)
        goto end;
    }

    if (!noprompt
        && EVP_read_pw_string(pass, sizeof pass, "Enter Import Password:",
    if (!noprompt) {
        if (1) {
#ifndef OPENSSL_NO_UI
            if (EVP_read_pw_string(pass, sizeof pass, "Enter Import Password:",
                                   0)) {
                BIO_printf(bio_err, "Can't read Password\n");
                goto end;
            }
        } else {
#endif
            BIO_printf(bio_err, "Password required\n");
            goto end;
        }
    }

    if (!twopass)
        OPENSSL_strlcpy(macpass, pass, sizeof macpass);
Loading