054e682675
Beyond generally eliminating unnecessary includes, eliminate as many includes of headers that declare/define particularly error-prone functionality like strlen, malloc, and free. crypto/err/internal.h was added to remove the dependency on openssl/thread.h from the public openssl/err.h header. The include of <stdlib.h> in openssl/mem.h was retained since it defines OPENSSL_malloc and friends as macros around the stdlib.h functions. The public x509.h, x509v3.h, and ssl.h headers were not changed in order to minimize breakage of source compatibility with external code. Change-Id: I0d264b73ad0a720587774430b2ab8f8275960329 Reviewed-on: https://boringssl-review.googlesource.com/4220 Reviewed-by: Adam Langley <agl@google.com>
226 lines
7.7 KiB
C
226 lines
7.7 KiB
C
/* ====================================================================
|
|
* Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
*
|
|
* 3. All advertising materials mentioning features or use of this
|
|
* software must display the following acknowledgment:
|
|
* "This product includes software developed by the OpenSSL Project
|
|
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
|
*
|
|
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
|
* endorse or promote products derived from this software without
|
|
* prior written permission. For written permission, please contact
|
|
* openssl-core@openssl.org.
|
|
*
|
|
* 5. Products derived from this software may not be called "OpenSSL"
|
|
* nor may "OpenSSL" appear in their names without prior written
|
|
* permission of the OpenSSL Project.
|
|
*
|
|
* 6. Redistributions of any form whatsoever must retain the following
|
|
* acknowledgment:
|
|
* "This product includes software developed by the OpenSSL Project
|
|
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
|
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
* ====================================================================
|
|
*
|
|
* This product includes cryptographic software written by Eric Young
|
|
* (eay@cryptsoft.com). This product includes software written by Tim
|
|
* Hudson (tjh@cryptsoft.com). */
|
|
|
|
#ifndef OPENSSL_HEADER_BASE_H
|
|
#define OPENSSL_HEADER_BASE_H
|
|
|
|
|
|
/* This file should be the first included by all BoringSSL headers. */
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
#include <sys/types.h>
|
|
|
|
#include <openssl/opensslfeatures.h>
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#if defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64)
|
|
#define OPENSSL_64_BIT
|
|
#define OPENSSL_X86_64
|
|
#elif defined(__x86) || defined(__i386) || defined(__i386__) || defined(_M_IX86)
|
|
#define OPENSSL_32_BIT
|
|
#define OPENSSL_X86
|
|
#elif defined(__aarch64__)
|
|
#define OPENSSL_64_BIT
|
|
#define OPENSSL_AARCH64
|
|
#elif defined(__arm) || defined(__arm__) || defined(_M_ARM)
|
|
#define OPENSSL_32_BIT
|
|
#define OPENSSL_ARM
|
|
#elif defined(__aarch64__)
|
|
#define OPENSSL_64_BIT
|
|
#define OPENSSL_AARCH64
|
|
#elif defined(__mips__) && !defined(__LP64__)
|
|
#define OPENSSL_32_BIT
|
|
#define OPENSSL_MIPS
|
|
#elif defined(__mips__) && defined(__LP64__)
|
|
#define OPENSSL_64_BIT
|
|
#define OPENSSL_MIPS64
|
|
#elif defined(__pnacl__)
|
|
#define OPENSSL_32_BIT
|
|
#define OPENSSL_PNACL
|
|
#else
|
|
#error "Unknown target CPU"
|
|
#endif
|
|
|
|
#if defined(__APPLE__)
|
|
#define OPENSSL_APPLE
|
|
#endif
|
|
|
|
#if defined(WIN32) || defined(_WIN32)
|
|
#define OPENSSL_WINDOWS
|
|
#endif
|
|
|
|
#define OPENSSL_IS_BORINGSSL
|
|
#define OPENSSL_VERSION_NUMBER 0x10002000
|
|
|
|
#if defined(BORINGSSL_SHARED_LIBRARY)
|
|
|
|
#if defined(OPENSSL_WINDOWS)
|
|
|
|
#if defined(BORINGSSL_IMPLEMENTATION)
|
|
#define OPENSSL_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define OPENSSL_EXPORT __declspec(dllimport)
|
|
#endif
|
|
|
|
#else /* defined(OPENSSL_WINDOWS) */
|
|
|
|
#if defined(BORINGSSL_IMPLEMENTATION)
|
|
#define OPENSSL_EXPORT __attribute__((visibility("default")))
|
|
#else
|
|
#define OPENSSL_EXPORT
|
|
#endif
|
|
|
|
#endif /* defined(OPENSSL_WINDOWS) */
|
|
|
|
#else /* defined(BORINGSSL_SHARED_LIBRARY) */
|
|
|
|
#define OPENSSL_EXPORT
|
|
|
|
#endif /* defined(BORINGSSL_SHARED_LIBRARY) */
|
|
|
|
typedef int ASN1_BOOLEAN;
|
|
typedef int ASN1_NULL;
|
|
typedef struct ASN1_ITEM_st ASN1_ITEM;
|
|
typedef struct asn1_object_st ASN1_OBJECT;
|
|
typedef struct asn1_pctx_st ASN1_PCTX;
|
|
typedef struct asn1_string_st ASN1_BIT_STRING;
|
|
typedef struct asn1_string_st ASN1_BMPSTRING;
|
|
typedef struct asn1_string_st ASN1_ENUMERATED;
|
|
typedef struct asn1_string_st ASN1_GENERALIZEDTIME;
|
|
typedef struct asn1_string_st ASN1_GENERALSTRING;
|
|
typedef struct asn1_string_st ASN1_IA5STRING;
|
|
typedef struct asn1_string_st ASN1_INTEGER;
|
|
typedef struct asn1_string_st ASN1_OCTET_STRING;
|
|
typedef struct asn1_string_st ASN1_PRINTABLESTRING;
|
|
typedef struct asn1_string_st ASN1_STRING;
|
|
typedef struct asn1_string_st ASN1_T61STRING;
|
|
typedef struct asn1_string_st ASN1_TIME;
|
|
typedef struct asn1_string_st ASN1_UNIVERSALSTRING;
|
|
typedef struct asn1_string_st ASN1_UTCTIME;
|
|
typedef struct asn1_string_st ASN1_UTF8STRING;
|
|
typedef struct asn1_string_st ASN1_VISIBLESTRING;
|
|
|
|
typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
|
|
typedef struct DIST_POINT_st DIST_POINT;
|
|
typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
|
|
typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
|
|
typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
|
|
typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
|
|
typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
|
|
typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
|
|
typedef struct X509_algor_st X509_ALGOR;
|
|
typedef struct X509_crl_st X509_CRL;
|
|
typedef struct X509_pubkey_st X509_PUBKEY;
|
|
typedef struct bignum_ctx BN_CTX;
|
|
typedef struct bignum_st BIGNUM;
|
|
typedef struct bio_method_st BIO_METHOD;
|
|
typedef struct bio_st BIO;
|
|
typedef struct bn_gencb_st BN_GENCB;
|
|
typedef struct bn_mont_ctx_st BN_MONT_CTX;
|
|
typedef struct buf_mem_st BUF_MEM;
|
|
typedef struct cbb_st CBB;
|
|
typedef struct cbs_st CBS;
|
|
typedef struct conf_st CONF;
|
|
typedef struct conf_value_st CONF_VALUE;
|
|
typedef int CRYPTO_THREADID;
|
|
typedef struct dh_method DH_METHOD;
|
|
typedef struct dh_st DH;
|
|
typedef struct dsa_method DSA_METHOD;
|
|
typedef struct dsa_st DSA;
|
|
typedef struct ec_key_st EC_KEY;
|
|
typedef struct ecdsa_method_st ECDSA_METHOD;
|
|
typedef struct ecdsa_sig_st ECDSA_SIG;
|
|
typedef struct engine_st ENGINE;
|
|
typedef struct env_md_ctx_st EVP_MD_CTX;
|
|
typedef struct env_md_st EVP_MD;
|
|
typedef struct evp_aead_st EVP_AEAD;
|
|
typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
|
|
typedef struct evp_cipher_st EVP_CIPHER;
|
|
typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
|
|
typedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
|
|
typedef struct evp_pkey_method_st EVP_PKEY_METHOD;
|
|
typedef struct evp_pkey_st EVP_PKEY;
|
|
typedef struct hmac_ctx_st HMAC_CTX;
|
|
typedef struct md4_state_st MD4_CTX;
|
|
typedef struct md5_state_st MD5_CTX;
|
|
typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
|
|
typedef struct pkcs12_st PKCS12;
|
|
typedef struct rand_meth_st RAND_METHOD;
|
|
typedef struct rc4_key_st RC4_KEY;
|
|
typedef struct rsa_meth_st RSA_METHOD;
|
|
typedef struct rsa_st RSA;
|
|
typedef struct sha256_state_st SHA256_CTX;
|
|
typedef struct sha512_state_st SHA512_CTX;
|
|
typedef struct sha_state_st SHA_CTX;
|
|
typedef struct ssl_ctx_st SSL_CTX;
|
|
typedef struct ssl_st SSL;
|
|
typedef struct st_ERR_FNS ERR_FNS;
|
|
typedef struct v3_ext_ctx X509V3_CTX;
|
|
typedef struct x509_crl_method_st X509_CRL_METHOD;
|
|
typedef struct x509_revoked_st X509_REVOKED;
|
|
typedef struct x509_st X509;
|
|
typedef struct x509_store_ctx_st X509_STORE_CTX;
|
|
typedef struct x509_store_st X509_STORE;
|
|
typedef void *OPENSSL_BLOCK;
|
|
|
|
|
|
#if defined(__cplusplus)
|
|
} /* extern C */
|
|
#endif
|
|
|
|
#endif /* OPENSSL_HEADER_BASE_H */
|