/* * Copyright 1995-2018 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 */ #ifndef HEADER_CRYPTLIB_H # define HEADER_CRYPTLIB_H # include # include # ifdef OPENSSL_USE_APPLINK # undef BIO_FLAGS_UPLINK # define BIO_FLAGS_UPLINK 0x8000 # include "ms/uplink.h" # endif # include # include # include # include # include "internal/nelem.h" #ifdef NDEBUG # define ossl_assert(x) ((x) != 0) #else __owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, const char *file, int line) { if (!expr) OPENSSL_die(exprstr, file, line); return expr; } # define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ __FILE__, __LINE__) #endif typedef struct ex_callback_st EX_CALLBACK; DEFINE_STACK_OF(EX_CALLBACK) typedef struct app_mem_info_st APP_INFO; typedef struct mem_st MEM; DEFINE_LHASH_OF(MEM); # define OPENSSL_CONF "openssl.cnf" # ifndef OPENSSL_SYS_VMS # define X509_CERT_AREA OPENSSLDIR # define X509_CERT_DIR OPENSSLDIR "/certs" # define X509_CERT_FILE OPENSSLDIR "/cert.pem" # define X509_PRIVATE_DIR OPENSSLDIR "/private" # define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" # else # define X509_CERT_AREA "OSSL$DATAROOT:[000000]" # define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" # define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" # define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" # define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" # endif # define X509_CERT_DIR_EVP "SSL_CERT_DIR" # define X509_CERT_FILE_EVP "SSL_CERT_FILE" # define CTLOG_FILE_EVP "CTLOG_FILE" /* size of string representations */ # define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) # define HEX_SIZE(type) (sizeof(type)*2) void OPENSSL_cpuid_setup(void); extern unsigned int OPENSSL_ia32cap_P[]; void OPENSSL_showfatal(const char *fmta, ...); void crypto_cleanup_all_ex_data_int(void); int openssl_init_fork_handlers(void); char *ossl_safe_getenv(const char *name); extern CRYPTO_RWLOCK *memdbg_lock; int openssl_strerror_r(int errnum, char *buf, size_t buflen); # if !defined(OPENSSL_NO_STDIO) FILE *openssl_fopen(const char *filename, const char *mode); # else void *openssl_fopen(const char *filename, const char *mode); # endif uint32_t OPENSSL_rdtsc(void); size_t OPENSSL_instrument_bus(unsigned int *, size_t); size_t OPENSSL_instrument_bus2(unsigned int *, size_t, size_t); typedef struct openssl_ctx_method { void *(*new_func)(void); void (*free_func)(void *); } OPENSSL_CTX_METHOD; /* For each type of data to store in the context, an index must be created */ int openssl_ctx_new_index(const OPENSSL_CTX_METHOD *); /* Functions to retrieve pointers to data by index */ void *openssl_ctx_get_data(OPENSSL_CTX *, int /* index */); #endif