1*8fb009dcSAndroid Build Coastguard Worker /* Copyright (C) 1995-1998 Eric Young ([email protected]) 2*8fb009dcSAndroid Build Coastguard Worker * All rights reserved. 3*8fb009dcSAndroid Build Coastguard Worker * 4*8fb009dcSAndroid Build Coastguard Worker * This package is an SSL implementation written 5*8fb009dcSAndroid Build Coastguard Worker * by Eric Young ([email protected]). 6*8fb009dcSAndroid Build Coastguard Worker * The implementation was written so as to conform with Netscapes SSL. 7*8fb009dcSAndroid Build Coastguard Worker * 8*8fb009dcSAndroid Build Coastguard Worker * This library is free for commercial and non-commercial use as long as 9*8fb009dcSAndroid Build Coastguard Worker * the following conditions are aheared to. The following conditions 10*8fb009dcSAndroid Build Coastguard Worker * apply to all code found in this distribution, be it the RC4, RSA, 11*8fb009dcSAndroid Build Coastguard Worker * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12*8fb009dcSAndroid Build Coastguard Worker * included with this distribution is covered by the same copyright terms 13*8fb009dcSAndroid Build Coastguard Worker * except that the holder is Tim Hudson ([email protected]). 14*8fb009dcSAndroid Build Coastguard Worker * 15*8fb009dcSAndroid Build Coastguard Worker * Copyright remains Eric Young's, and as such any Copyright notices in 16*8fb009dcSAndroid Build Coastguard Worker * the code are not to be removed. 17*8fb009dcSAndroid Build Coastguard Worker * If this package is used in a product, Eric Young should be given attribution 18*8fb009dcSAndroid Build Coastguard Worker * as the author of the parts of the library used. 19*8fb009dcSAndroid Build Coastguard Worker * This can be in the form of a textual message at program startup or 20*8fb009dcSAndroid Build Coastguard Worker * in documentation (online or textual) provided with the package. 21*8fb009dcSAndroid Build Coastguard Worker * 22*8fb009dcSAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without 23*8fb009dcSAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions 24*8fb009dcSAndroid Build Coastguard Worker * are met: 25*8fb009dcSAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the copyright 26*8fb009dcSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer. 27*8fb009dcSAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright 28*8fb009dcSAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the 29*8fb009dcSAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution. 30*8fb009dcSAndroid Build Coastguard Worker * 3. All advertising materials mentioning features or use of this software 31*8fb009dcSAndroid Build Coastguard Worker * must display the following acknowledgement: 32*8fb009dcSAndroid Build Coastguard Worker * "This product includes cryptographic software written by 33*8fb009dcSAndroid Build Coastguard Worker * Eric Young ([email protected])" 34*8fb009dcSAndroid Build Coastguard Worker * The word 'cryptographic' can be left out if the rouines from the library 35*8fb009dcSAndroid Build Coastguard Worker * being used are not cryptographic related :-). 36*8fb009dcSAndroid Build Coastguard Worker * 4. If you include any Windows specific code (or a derivative thereof) from 37*8fb009dcSAndroid Build Coastguard Worker * the apps directory (application code) you must include an acknowledgement: 38*8fb009dcSAndroid Build Coastguard Worker * "This product includes software written by Tim Hudson ([email protected])" 39*8fb009dcSAndroid Build Coastguard Worker * 40*8fb009dcSAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41*8fb009dcSAndroid Build Coastguard Worker * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42*8fb009dcSAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43*8fb009dcSAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 44*8fb009dcSAndroid Build Coastguard Worker * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 45*8fb009dcSAndroid Build Coastguard Worker * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 46*8fb009dcSAndroid Build Coastguard Worker * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 47*8fb009dcSAndroid Build Coastguard Worker * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 48*8fb009dcSAndroid Build Coastguard Worker * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49*8fb009dcSAndroid Build Coastguard Worker * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50*8fb009dcSAndroid Build Coastguard Worker * SUCH DAMAGE. 51*8fb009dcSAndroid Build Coastguard Worker * 52*8fb009dcSAndroid Build Coastguard Worker * The licence and distribution terms for any publically available version or 53*8fb009dcSAndroid Build Coastguard Worker * derivative of this code cannot be changed. i.e. this code cannot simply be 54*8fb009dcSAndroid Build Coastguard Worker * copied and put under another distribution licence 55*8fb009dcSAndroid Build Coastguard Worker * [including the GNU Public Licence.] */ 56*8fb009dcSAndroid Build Coastguard Worker 57*8fb009dcSAndroid Build Coastguard Worker #ifndef OPENSSL_HEADER_CONF_H 58*8fb009dcSAndroid Build Coastguard Worker #define OPENSSL_HEADER_CONF_H 59*8fb009dcSAndroid Build Coastguard Worker 60*8fb009dcSAndroid Build Coastguard Worker #include <openssl/base.h> 61*8fb009dcSAndroid Build Coastguard Worker 62*8fb009dcSAndroid Build Coastguard Worker #include <openssl/stack.h> 63*8fb009dcSAndroid Build Coastguard Worker #include <openssl/lhash.h> 64*8fb009dcSAndroid Build Coastguard Worker 65*8fb009dcSAndroid Build Coastguard Worker #if defined(__cplusplus) 66*8fb009dcSAndroid Build Coastguard Worker extern "C" { 67*8fb009dcSAndroid Build Coastguard Worker #endif 68*8fb009dcSAndroid Build Coastguard Worker 69*8fb009dcSAndroid Build Coastguard Worker 70*8fb009dcSAndroid Build Coastguard Worker // Config files. 71*8fb009dcSAndroid Build Coastguard Worker // 72*8fb009dcSAndroid Build Coastguard Worker // This library handles OpenSSL's config files, which look like: 73*8fb009dcSAndroid Build Coastguard Worker // 74*8fb009dcSAndroid Build Coastguard Worker // # Comment 75*8fb009dcSAndroid Build Coastguard Worker // 76*8fb009dcSAndroid Build Coastguard Worker // # This key is in the default section. 77*8fb009dcSAndroid Build Coastguard Worker // key=value 78*8fb009dcSAndroid Build Coastguard Worker // 79*8fb009dcSAndroid Build Coastguard Worker // [section_name] 80*8fb009dcSAndroid Build Coastguard Worker // key2=value2 81*8fb009dcSAndroid Build Coastguard Worker // 82*8fb009dcSAndroid Build Coastguard Worker // Config files are represented by a |CONF|. Use of this module is strongly 83*8fb009dcSAndroid Build Coastguard Worker // discouraged. It is a remnant of the OpenSSL command-line tool. Parsing an 84*8fb009dcSAndroid Build Coastguard Worker // untrusted input as a config file risks string injection and denial of service 85*8fb009dcSAndroid Build Coastguard Worker // vulnerabilities. 86*8fb009dcSAndroid Build Coastguard Worker 87*8fb009dcSAndroid Build Coastguard Worker 88*8fb009dcSAndroid Build Coastguard Worker struct conf_value_st { 89*8fb009dcSAndroid Build Coastguard Worker char *section; 90*8fb009dcSAndroid Build Coastguard Worker char *name; 91*8fb009dcSAndroid Build Coastguard Worker char *value; 92*8fb009dcSAndroid Build Coastguard Worker }; 93*8fb009dcSAndroid Build Coastguard Worker 94*8fb009dcSAndroid Build Coastguard Worker DEFINE_STACK_OF(CONF_VALUE) 95*8fb009dcSAndroid Build Coastguard Worker DECLARE_LHASH_OF(CONF_VALUE) 96*8fb009dcSAndroid Build Coastguard Worker 97*8fb009dcSAndroid Build Coastguard Worker 98*8fb009dcSAndroid Build Coastguard Worker // NCONF_new returns a fresh, empty |CONF|, or NULL on error. The |method| 99*8fb009dcSAndroid Build Coastguard Worker // argument must be NULL. 100*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT CONF *NCONF_new(void *method); 101*8fb009dcSAndroid Build Coastguard Worker 102*8fb009dcSAndroid Build Coastguard Worker // NCONF_free frees all the data owned by |conf| and then |conf| itself. 103*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT void NCONF_free(CONF *conf); 104*8fb009dcSAndroid Build Coastguard Worker 105*8fb009dcSAndroid Build Coastguard Worker // NCONF_load parses the file named |filename| and adds the values found to 106*8fb009dcSAndroid Build Coastguard Worker // |conf|. It returns one on success and zero on error. In the event of an 107*8fb009dcSAndroid Build Coastguard Worker // error, if |out_error_line| is not NULL, |*out_error_line| is set to the 108*8fb009dcSAndroid Build Coastguard Worker // number of the line that contained the error. 109*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT int NCONF_load(CONF *conf, const char *filename, 110*8fb009dcSAndroid Build Coastguard Worker long *out_error_line); 111*8fb009dcSAndroid Build Coastguard Worker 112*8fb009dcSAndroid Build Coastguard Worker // NCONF_load_bio acts like |NCONF_load| but reads from |bio| rather than from 113*8fb009dcSAndroid Build Coastguard Worker // a named file. 114*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT int NCONF_load_bio(CONF *conf, BIO *bio, long *out_error_line); 115*8fb009dcSAndroid Build Coastguard Worker 116*8fb009dcSAndroid Build Coastguard Worker // NCONF_get_section returns a stack of values for a given section in |conf|. 117*8fb009dcSAndroid Build Coastguard Worker // If |section| is NULL, the default section is returned. It returns NULL on 118*8fb009dcSAndroid Build Coastguard Worker // error. 119*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT const STACK_OF(CONF_VALUE) *NCONF_get_section( 120*8fb009dcSAndroid Build Coastguard Worker const CONF *conf, const char *section); 121*8fb009dcSAndroid Build Coastguard Worker 122*8fb009dcSAndroid Build Coastguard Worker // NCONF_get_string returns the value of the key |name|, in section |section|. 123*8fb009dcSAndroid Build Coastguard Worker // The |section| argument may be NULL to indicate the default section. It 124*8fb009dcSAndroid Build Coastguard Worker // returns the value or NULL on error. 125*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT const char *NCONF_get_string(const CONF *conf, 126*8fb009dcSAndroid Build Coastguard Worker const char *section, 127*8fb009dcSAndroid Build Coastguard Worker const char *name); 128*8fb009dcSAndroid Build Coastguard Worker 129*8fb009dcSAndroid Build Coastguard Worker 130*8fb009dcSAndroid Build Coastguard Worker // Deprecated functions 131*8fb009dcSAndroid Build Coastguard Worker 132*8fb009dcSAndroid Build Coastguard Worker // These defines do nothing but are provided to make old code easier to 133*8fb009dcSAndroid Build Coastguard Worker // compile. 134*8fb009dcSAndroid Build Coastguard Worker #define CONF_MFLAGS_DEFAULT_SECTION 0 135*8fb009dcSAndroid Build Coastguard Worker #define CONF_MFLAGS_IGNORE_MISSING_FILE 0 136*8fb009dcSAndroid Build Coastguard Worker 137*8fb009dcSAndroid Build Coastguard Worker // CONF_modules_load_file returns one. BoringSSL is defined to have no config 138*8fb009dcSAndroid Build Coastguard Worker // file options, thus loading from |filename| always succeeds by doing nothing. 139*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT int CONF_modules_load_file(const char *filename, 140*8fb009dcSAndroid Build Coastguard Worker const char *appname, 141*8fb009dcSAndroid Build Coastguard Worker unsigned long flags); 142*8fb009dcSAndroid Build Coastguard Worker 143*8fb009dcSAndroid Build Coastguard Worker // CONF_modules_free does nothing. 144*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT void CONF_modules_free(void); 145*8fb009dcSAndroid Build Coastguard Worker 146*8fb009dcSAndroid Build Coastguard Worker // OPENSSL_config does nothing. 147*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT void OPENSSL_config(const char *config_name); 148*8fb009dcSAndroid Build Coastguard Worker 149*8fb009dcSAndroid Build Coastguard Worker // OPENSSL_no_config does nothing. 150*8fb009dcSAndroid Build Coastguard Worker OPENSSL_EXPORT void OPENSSL_no_config(void); 151*8fb009dcSAndroid Build Coastguard Worker 152*8fb009dcSAndroid Build Coastguard Worker 153*8fb009dcSAndroid Build Coastguard Worker #if defined(__cplusplus) 154*8fb009dcSAndroid Build Coastguard Worker } // extern C 155*8fb009dcSAndroid Build Coastguard Worker 156*8fb009dcSAndroid Build Coastguard Worker extern "C++" { 157*8fb009dcSAndroid Build Coastguard Worker 158*8fb009dcSAndroid Build Coastguard Worker BSSL_NAMESPACE_BEGIN 159*8fb009dcSAndroid Build Coastguard Worker 160*8fb009dcSAndroid Build Coastguard Worker BORINGSSL_MAKE_DELETER(CONF, NCONF_free) 161*8fb009dcSAndroid Build Coastguard Worker 162*8fb009dcSAndroid Build Coastguard Worker BSSL_NAMESPACE_END 163*8fb009dcSAndroid Build Coastguard Worker 164*8fb009dcSAndroid Build Coastguard Worker } // extern C++ 165*8fb009dcSAndroid Build Coastguard Worker 166*8fb009dcSAndroid Build Coastguard Worker #endif 167*8fb009dcSAndroid Build Coastguard Worker 168*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_LIST_CANNOT_BE_NULL 100 169*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 101 170*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_MISSING_EQUAL_SIGN 102 171*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_NO_CLOSE_BRACE 103 172*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 104 173*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_VARIABLE_HAS_NO_VALUE 105 174*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_VARIABLE_EXPANSION_TOO_LONG 106 175*8fb009dcSAndroid Build Coastguard Worker #define CONF_R_VARIABLE_EXPANSION_NOT_SUPPORTED 107 176*8fb009dcSAndroid Build Coastguard Worker 177*8fb009dcSAndroid Build Coastguard Worker #endif // OPENSSL_HEADER_THREAD_H 178