1/* 2 * Copyright 1995-2019 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#ifndef OSSL_INTERNAL_CRYPTLIB_H 11# define OSSL_INTERNAL_CRYPTLIB_H 12 13# include <stdlib.h> 14# include <string.h> 15 16# ifdef OPENSSL_USE_APPLINK 17# undef BIO_FLAGS_UPLINK 18# define BIO_FLAGS_UPLINK 0x8000 19# include "ms/uplink.h" 20# endif 21 22# include <openssl/crypto.h> 23# include <openssl/buffer.h> 24# include <openssl/bio.h> 25# include <openssl/err.h> 26# include "internal/nelem.h" 27 28#ifdef NDEBUG 29# define ossl_assert(x) ((x) != 0) 30#else 31__owur static ossl_inline int ossl_assert_int(int expr, const char *exprstr, 32 const char *file, int line) 33{ 34 if (!expr) 35 OPENSSL_die(exprstr, file, line); 36 37 return expr; 38} 39 40# define ossl_assert(x) ossl_assert_int((x) != 0, "Assertion failed: "#x, \ 41 __FILE__, __LINE__) 42 43#endif 44 45typedef struct ex_callback_st EX_CALLBACK; 46 47DEFINE_STACK_OF(EX_CALLBACK) 48 49typedef struct app_mem_info_st APP_INFO; 50 51typedef struct mem_st MEM; 52DEFINE_LHASH_OF(MEM); 53 54# define OPENSSL_CONF "openssl.cnf" 55 56# ifndef OPENSSL_SYS_VMS 57# define X509_CERT_AREA OPENSSLDIR 58# define X509_CERT_DIR OPENSSLDIR "/certs" 59# define X509_CERT_FILE OPENSSLDIR "/cert.pem" 60# define X509_PRIVATE_DIR OPENSSLDIR "/private" 61# define CTLOG_FILE OPENSSLDIR "/ct_log_list.cnf" 62# else 63# define X509_CERT_AREA "OSSL$DATAROOT:[000000]" 64# define X509_CERT_DIR "OSSL$DATAROOT:[CERTS]" 65# define X509_CERT_FILE "OSSL$DATAROOT:[000000]cert.pem" 66# define X509_PRIVATE_DIR "OSSL$DATAROOT:[PRIVATE]" 67# define CTLOG_FILE "OSSL$DATAROOT:[000000]ct_log_list.cnf" 68# endif 69 70# define X509_CERT_DIR_EVP "SSL_CERT_DIR" 71# define X509_CERT_FILE_EVP "SSL_CERT_FILE" 72# define CTLOG_FILE_EVP "CTLOG_FILE" 73 74/* size of string representations */ 75# define DECIMAL_SIZE(type) ((sizeof(type)*8+2)/3+1) 76# define HEX_SIZE(type) (sizeof(type)*2) 77 78void OPENSSL_cpuid_setup(void); 79extern unsigned int OPENSSL_ia32cap_P[]; 80void OPENSSL_showfatal(const char *fmta, ...); 81void crypto_cleanup_all_ex_data_int(void); 82int openssl_init_fork_handlers(void); 83int openssl_get_fork_id(void); 84 85char *ossl_safe_getenv(const char *name); 86 87extern CRYPTO_RWLOCK *memdbg_lock; 88int openssl_strerror_r(int errnum, char *buf, size_t buflen); 89# if !defined(OPENSSL_NO_STDIO) 90FILE *openssl_fopen(const char *filename, const char *mode); 91# else 92void *openssl_fopen(const char *filename, const char *mode); 93# endif 94 95uint32_t OPENSSL_rdtsc(void); 96size_t OPENSSL_instrument_bus(unsigned int *, size_t); 97size_t OPENSSL_instrument_bus2(unsigned int *, size_t, size_t); 98 99#endif 100