Copyright consolidation 04/10
[openssl.git] / crypto / conf / conf_sap.c
1 /*
2  * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
3  *
4  * Licensed under the OpenSSL license (the "License").  You may not use
5  * this file except in compliance with the License.  You can obtain a copy
6  * in the file LICENSE in the source distribution or at
7  * https://www.openssl.org/source/license.html
8  */
9
10 #include <stdio.h>
11 #include <openssl/crypto.h>
12 #include "internal/cryptlib.h"
13 #include <internal/conf.h>
14 #include <openssl/x509.h>
15 #include <openssl/asn1.h>
16 #include <openssl/engine.h>
17
18 /*
19  * This is the automatic configuration loader: it is called automatically by
20  * OpenSSL when any of a number of standard initialisation functions are
21  * called, unless this is overridden by calling OPENSSL_no_config()
22  */
23
24 static int openssl_configured = 0;
25
26 #if OPENSSL_API_COMPAT < 0x10100000L
27 void OPENSSL_config(const char *config_name)
28 {
29     OPENSSL_INIT_SETTINGS settings;
30
31     memset(&settings, 0, sizeof(settings));
32     if (config_name != NULL)
33         settings.config_name = strdup(config_name);
34     OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, &settings);
35 }
36 #endif
37
38 void openssl_config_int(const char *config_name)
39 {
40     if (openssl_configured)
41         return;
42
43     OPENSSL_load_builtin_modules();
44 #ifndef OPENSSL_NO_ENGINE
45     /* Need to load ENGINEs */
46     ENGINE_load_builtin_engines();
47 #endif
48     ERR_clear_error();
49 #ifndef OPENSSL_SYS_UEFI
50     CONF_modules_load_file(NULL, config_name,
51                                CONF_MFLAGS_DEFAULT_SECTION |
52                                CONF_MFLAGS_IGNORE_MISSING_FILE);
53 #endif
54     openssl_configured = 1;
55 }
56
57 void openssl_no_config_int(void)
58 {
59     openssl_configured = 1;
60 }