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 45 typedef struct ex_callback_st EX_CALLBACK; 46 47 DEFINE_STACK_OF(EX_CALLBACK) 48 49 typedef struct app_mem_info_st APP_INFO; 50 51 typedef struct mem_st MEM; 52 DEFINE_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 78 void OPENSSL_cpuid_setup(void); 79 extern unsigned int OPENSSL_ia32cap_P[]; 80 void OPENSSL_showfatal(const char *fmta, ...); 81 void crypto_cleanup_all_ex_data_int(void); 82 int openssl_init_fork_handlers(void); 83 int openssl_get_fork_id(void); 84 85 char *ossl_safe_getenv(const char *name); 86 87 extern CRYPTO_RWLOCK *memdbg_lock; 88 int openssl_strerror_r(int errnum, char *buf, size_t buflen); 89 # if !defined(OPENSSL_NO_STDIO) 90 FILE *openssl_fopen(const char *filename, const char *mode); 91 # else 92 void *openssl_fopen(const char *filename, const char *mode); 93 # endif 94 95 uint32_t OPENSSL_rdtsc(void); 96 size_t OPENSSL_instrument_bus(unsigned int *, size_t); 97 size_t OPENSSL_instrument_bus2(unsigned int *, size_t, size_t); 98 99 #endif 100