mirror of
https://github.com/openssl/openssl.git
synced 2025-01-30 14:01:55 +08:00
22e27978b2
The self tests for the fips module are triggered on startup and they need to know the core's libctx in order to function correctly. As the provider can be autoloaded via configuration it then needs to propagate the callers libctx down to the provider via the config load. Note that OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, ..) is still called, but will only load the default configuration if the OPENSSL_CONF environment variable is set. Reviewed-by: Matt Caswell <matt@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11240)
73 lines
1.8 KiB
C
73 lines
1.8 KiB
C
/*
|
|
* Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
|
|
*
|
|
* Licensed under the Apache License 2.0 (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 <stdio.h>
|
|
#include <openssl/crypto.h>
|
|
#include "internal/cryptlib.h"
|
|
#include "internal/conf.h"
|
|
#include <openssl/x509.h>
|
|
#include <openssl/asn1.h>
|
|
#include <openssl/engine.h>
|
|
|
|
#ifdef _WIN32
|
|
# define strdup _strdup
|
|
#endif
|
|
|
|
/*
|
|
* This is the automatic configuration loader: it is called automatically by
|
|
* OpenSSL when any of a number of standard initialisation functions are
|
|
* called, unless this is overridden by calling OPENSSL_no_config()
|
|
*/
|
|
|
|
static int openssl_configured = 0;
|
|
|
|
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
|
|
void OPENSSL_config(const char *appname)
|
|
{
|
|
OPENSSL_INIT_SETTINGS settings;
|
|
|
|
memset(&settings, 0, sizeof(settings));
|
|
if (appname != NULL)
|
|
settings.appname = strdup(appname);
|
|
settings.flags = DEFAULT_CONF_MFLAGS;
|
|
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, &settings);
|
|
}
|
|
#endif
|
|
|
|
int openssl_config_int(const OPENSSL_INIT_SETTINGS *settings)
|
|
{
|
|
int ret = 0;
|
|
const char *filename;
|
|
const char *appname;
|
|
unsigned long flags;
|
|
|
|
if (openssl_configured)
|
|
return 1;
|
|
|
|
filename = settings ? settings->filename : NULL;
|
|
appname = settings ? settings->appname : NULL;
|
|
flags = settings ? settings->flags : DEFAULT_CONF_MFLAGS;
|
|
|
|
#ifdef OPENSSL_INIT_DEBUG
|
|
fprintf(stderr, "OPENSSL_INIT: openssl_config_int(%s, %s, %lu)\n",
|
|
filename, appname, flags);
|
|
#endif
|
|
|
|
#ifndef OPENSSL_SYS_UEFI
|
|
ret = CONF_modules_load_file(filename, appname, flags);
|
|
#endif
|
|
openssl_configured = 1;
|
|
return ret;
|
|
}
|
|
|
|
void openssl_no_config_int(void)
|
|
{
|
|
openssl_configured = 1;
|
|
}
|