RT4562: Fix misleading doc on OPENSSL_config

Also changed the code to use "appname" not "filename"

Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
Rich Salz 2016-06-12 21:49:40 -04:00
parent 036e61b166
commit cda3ae5bd0
8 changed files with 35 additions and 34 deletions

View File

@ -340,19 +340,19 @@ OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void)
#ifndef OPENSSL_NO_STDIO
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
const char *config_file)
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
const char *appname)
{
char *new_config_file = NULL;
char *newappname = NULL;
if (config_file != NULL) {
new_config_file = strdup(config_file);
if (new_config_file == NULL)
if (appname != NULL) {
newappname = strdup(appname);
if (newappname == NULL)
return 0;
}
free(settings->config_name);
settings->config_name = new_config_file;
free(settings->appname);
settings->appname = newappname;
return 1;
}
@ -360,6 +360,6 @@ int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings)
{
free(settings->config_name);
free(settings->appname);
free(settings);
}

View File

@ -24,18 +24,18 @@
static int openssl_configured = 0;
#if OPENSSL_API_COMPAT < 0x10100000L
void OPENSSL_config(const char *config_name)
void OPENSSL_config(const char *appname)
{
OPENSSL_INIT_SETTINGS settings;
memset(&settings, 0, sizeof(settings));
if (config_name != NULL)
settings.config_name = strdup(config_name);
if (appname != NULL)
settings.appname = strdup(appname);
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, &settings);
}
#endif
void openssl_config_int(const char *config_name)
void openssl_config_int(const char *appname)
{
if (openssl_configured)
return;
@ -47,7 +47,7 @@ void openssl_config_int(const char *config_name)
#endif
ERR_clear_error();
#ifndef OPENSSL_SYS_UEFI
CONF_modules_load_file(NULL, config_name,
CONF_modules_load_file(NULL, appname,
CONF_MFLAGS_DEFAULT_SECTION |
CONF_MFLAGS_IGNORE_MISSING_FILE);
#endif

View File

@ -153,15 +153,15 @@ static void ossl_init_no_add_algs(void)
static CRYPTO_ONCE config = CRYPTO_ONCE_STATIC_INIT;
static int config_inited = 0;
static const char *config_filename;
static const char *appname;
static void ossl_init_config(void)
{
#ifdef OPENSSL_INIT_DEBUG
fprintf(stderr,
"OPENSSL_INIT: ossl_init_config: openssl_config(%s)\n",
config_filename==NULL?"NULL":config_filename);
appname == NULL ? "NULL" : appname);
#endif
openssl_config_int(config_filename);
openssl_config_int(appname);
config_inited = 1;
}
static void ossl_init_no_config(void)
@ -512,7 +512,7 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
if (opts & OPENSSL_INIT_LOAD_CONFIG) {
int ret;
CRYPTO_THREAD_write_lock(init_lock);
config_filename = (settings == NULL) ? NULL : settings->config_name;
appname = (settings == NULL) ? NULL : settings->appname;
ret = CRYPTO_THREAD_run_once(&config, ossl_init_config);
CRYPTO_THREAD_unlock(init_lock);
if (!ret)

View File

@ -8,15 +8,16 @@ OPENSSL_config, OPENSSL_no_config - simple OpenSSL configuration functions
#include <openssl/conf.h>
void OPENSSL_config(const char *config_name);
#if OPENSSL_API_COMPAT < 0x10100000L
void OPENSSL_config(const char *appname);
void OPENSSL_no_config(void);
#endif
=head1 DESCRIPTION
OPENSSL_config() configures OpenSSL using the standard B<openssl.cnf>
configuration file name using B<config_name>. If B<config_name> is NULL then
the file specified in the environment variable B<OPENSSL_CONF> will be used,
and if that is not set then a system default location is used.
OPENSSL_config() configures OpenSSL using the standard B<openssl.cnf> and
reads from the application section B<appname>. If B<appname> is NULL then
the default section, B<openssl_conf>, will be used.
Errors are silently ignored.
Multiple calls have no effect.

View File

@ -16,7 +16,7 @@ initialisation and deinitialisation functions
void OPENSSL_thread_stop(void);
OPENSSL_INIT_SETTINGS *OPENSSL_init_new(void);
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *init,
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *init,
const char* name);
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *init);
@ -191,8 +191,8 @@ described in the NOTES section below.
The B<OPENSSL_INIT_LOAD_CONFIG> flag will load a default configuration
file. To specify a different file, an B<OPENSSL_INIT_SETTINGS> must
be created and used. The routines
OPENSSL_init_new() and OPENSSL_INIT_set_config_filename() can be used to
allocate the object and set the configuration filename, and then the
OPENSSL_init_new() and OPENSSL_INIT_set_config_appname() can be used to
allocate the object and set the application name, and then the
object can be released with OPENSSL_INIT_free() when done.
=head1 NOTES
@ -220,7 +220,7 @@ call should use the RTLD_NODELETE flag (where available on the platform).
=head1 RETURN VALUES
The functions OPENSSL_init_crypto, OPENSSL_atexit() and
OPENSSL_INIT_set_config_filename() return 1 on success or 0 on error.
OPENSSL_INIT_set_config_appname() return 1 on success or 0 on error.
=head1 SEE ALSO
@ -229,7 +229,7 @@ L<OPENSSL_init_ssl(3)>
=head1 HISTORY
The OPENSSL_init_crypto(), OPENSSL_cleanup(), OPENSSL_atexit(),
OPENSSL_thread_stop(), OPENSSL_init_new(), OPENSSL_INIT_set_config_filename()
OPENSSL_thread_stop(), OPENSSL_init_new(), OPENSSL_INIT_set_config_appname()
and OPENSSL_INIT_free() functions were added in OpenSSL 1.1.0.
=head1 COPYRIGHT

View File

@ -18,10 +18,10 @@ extern "C" {
struct ossl_init_settings_st {
char *config_name;
char *appname;
};
void openssl_config_int(const char *config_name);
void openssl_config_int(const char *appname);
void openssl_no_config_int(void);
void conf_modules_free_int(void);

View File

@ -380,7 +380,7 @@ void OPENSSL_thread_stop(void);
/* Low-level control of initialization */
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
#ifndef OPENSSL_NO_STDIO
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
const char *config_file);
#endif
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);

View File

@ -1126,7 +1126,7 @@ i2d_X509_EXTENSIONS 1116 1_1_0 EXIST::FUNCTION:
X509_STORE_CTX_get0_store 1117 1_1_0 EXIST::FUNCTION:
PKCS12_pack_p7data 1118 1_1_0 EXIST::FUNCTION:
RSA_print_fp 1119 1_1_0 EXIST::FUNCTION:RSA,STDIO
OPENSSL_INIT_set_config_filename 1120 1_1_0 EXIST::FUNCTION:STDIO
OPENSSL_INIT_set_config_appname 1120 1_1_0 EXIST::FUNCTION:STDIO
EC_KEY_print_fp 1121 1_1_0 EXIST::FUNCTION:EC,STDIO
BIO_dup_chain 1122 1_1_0 EXIST::FUNCTION:
PKCS8_PRIV_KEY_INFO_it 1123 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: