Commit 57d0d048 authored by Richard Levitte's avatar Richard Levitte
Browse files

Add a null UI method



There are cases when, if you pass a NULL UI_METHOD, the called
function will use an internal default.  This is well and good, but
there may be cases when this is undesirable and one would rather send
in a UI that does absolutely nothing (sort of a /dev/null).  UI_null()
is the UI_METHOD for this purpose.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2744)
parent fd910ef9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
LIBS=../../libcrypto
SOURCE[../../libcrypto]=\
        ui_err.c ui_lib.c ui_openssl.c ui_util.c
        ui_err.c ui_lib.c ui_openssl.c ui_null.c ui_util.c

crypto/ui/ui_null.c

0 → 100644
+26 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the OpenSSL license (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */

#include "ui_locl.h"

static const UI_METHOD ui_null = {
    "OpenSSL NULL UI",
    NULL,                        /* opener */
    NULL,                        /* writer */
    NULL,                        /* flusher */
    NULL,                        /* reader */
    NULL,                        /* closer */
    NULL
};

/* The method with all the built-in thingies */
const UI_METHOD *UI_null(void)
{
    return &ui_null;
}
+5 −1
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ UI_dup_input_boolean, UI_add_info_string, UI_dup_info_string,
UI_add_error_string, UI_dup_error_string, UI_construct_prompt,
UI_add_user_data, UI_get0_user_data, UI_get0_result, UI_process,
UI_ctrl, UI_set_default_method, UI_get_default_method, UI_get_method,
UI_set_method, UI_OpenSSL, - user interface
UI_set_method, UI_OpenSSL, UI_null - user interface

=head1 SYNOPSIS

@@ -59,6 +59,7 @@ UI_set_method, UI_OpenSSL, - user interface
 const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);

 UI_METHOD *UI_OpenSSL(void);
 const UI_METHOD *UI_null(void);

=head1 DESCRIPTION

@@ -177,6 +178,9 @@ UI_set_method() changes the UI method associated with a given UI.
UI_OpenSSL() is the default OpenSSL UI method for prompting
passphrases on the command line.

UI_null() is a UI method that does nothing.  Its use is to avoid
getting internal defaults for passed UI_METHOD pointers.

=head1 COPYRIGHT

Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
+6 −0
Original line number Diff line number Diff line
@@ -206,6 +206,12 @@ const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth);
/* The method with all the built-in thingies */
UI_METHOD *UI_OpenSSL(void);

/*
 * NULL method.  Literarily does nothing, but may serve as a placeholder
 * to avoid internal default.
 */
const UI_METHOD *UI_null(void);

/* ---------- For method writers ---------- */
/*-
   A method contains a number of functions that implement the low level
+1 −0
Original line number Diff line number Diff line
@@ -4252,3 +4252,4 @@ EVP_aria_256_ecb 4202 1_1_1 EXIST::FUNCTION:ARIA
EVP_aria_256_ctr                        4203	1_1_1	EXIST::FUNCTION:ARIA
EVP_aria_128_ctr                        4204	1_1_1	EXIST::FUNCTION:ARIA
EVP_aria_192_ctr                        4205	1_1_1	EXIST::FUNCTION:ARIA
UI_null                                 4206	1_1_1	EXIST::FUNCTION:UI