1 /* crypto.h 2 * 3 * Copyright (C) 2006-2021 wolfSSL Inc. 4 * 5 * This file is part of wolfSSL. 6 * 7 * wolfSSL is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * wolfSSL is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 */ 21 22 /* crypto.h for openSSL */ 23 24 #ifndef WOLFSSL_CRYPTO_H_ 25 #define WOLFSSL_CRYPTO_H_ 26 27 #include <wolfssl/wolfcrypt/settings.h> 28 29 typedef struct WOLFSSL_INIT_SETTINGS { 30 char* appname; 31 } WOLFSSL_INIT_SETTINGS; 32 typedef WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS; 33 34 typedef struct WOLFSSL_CRYPTO_THREADID { 35 int dummy; 36 } WOLFSSL_CRYPTO_THREADID; 37 typedef struct crypto_threadid_st CRYPTO_THREADID; 38 39 typedef struct CRYPTO_EX_DATA CRYPTO_EX_DATA; 40 typedef void (CRYPTO_free_func)(void* parent, void* ptr, CRYPTO_EX_DATA* ad, int idx, 41 long argl, void* argp); 42 43 #include <wolfssl/openssl/opensslv.h> 44 #include <wolfssl/openssl/conf.h> 45 46 #ifdef WOLFSSL_PREFIX 47 #include "prefix_crypto.h" 48 #endif 49 50 WOLFSSL_API const char* wolfSSLeay_version(int type); 51 WOLFSSL_API unsigned long wolfSSLeay(void); 52 WOLFSSL_API unsigned long wolfSSL_OpenSSL_version_num(void); 53 54 #ifdef OPENSSL_EXTRA 55 WOLFSSL_API void wolfSSL_OPENSSL_free(void*); 56 WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); 57 WOLFSSL_API int wolfSSL_OPENSSL_hexchar2int(unsigned char c); 58 WOLFSSL_API unsigned char *wolfSSL_OPENSSL_hexstr2buf(const char *str, long *len); 59 60 WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const OPENSSL_INIT_SETTINGS *settings); 61 #endif 62 63 #define crypto_threadid_st WOLFSSL_CRYPTO_THREADID 64 #define CRYPTO_THREADID WOLFSSL_CRYPTO_THREADID 65 66 #define SSLeay_version wolfSSLeay_version 67 #define SSLeay wolfSSLeay 68 #define OpenSSL_version_num wolfSSL_OpenSSL_version_num 69 70 #ifdef WOLFSSL_QT 71 #define SSLEAY_VERSION 0x10001000L 72 #else 73 #define SSLEAY_VERSION 0x0090600fL 74 #endif 75 #define SSLEAY_VERSION_NUMBER SSLEAY_VERSION 76 #define CRYPTO_lock wc_LockMutex_ex 77 78 /* this function was used to set the default malloc, free, and realloc */ 79 #define CRYPTO_malloc_init() 0 /* CRYPTO_malloc_init is not needed */ 80 81 #define OPENSSL_free wolfSSL_OPENSSL_free 82 #define OPENSSL_malloc wolfSSL_OPENSSL_malloc 83 #define OPENSSL_hexchar2int wolfSSL_OPENSSL_hexchar2int 84 #define OPENSSL_hexstr2buf wolfSSL_OPENSSL_hexstr2buf 85 86 #define OPENSSL_INIT_ENGINE_ALL_BUILTIN 0x00000001L 87 #define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L 88 #define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L 89 #define OPENSSL_INIT_LOAD_CONFIG 0x00000040L 90 91 #define OPENSSL_init_crypto wolfSSL_OPENSSL_init_crypto 92 93 #ifdef WOLFSSL_OPENVPN 94 # define OPENSSL_assert(e) \ 95 if (!(e)) { \ 96 fprintf(stderr, "%s:%d wolfSSL internal error: assertion failed: " #e, \ 97 __FILE__, __LINE__); \ 98 raise(SIGABRT); \ 99 _exit(3); \ 100 } 101 #endif 102 103 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ 104 defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_EX_DATA) 105 #define CRYPTO_set_mem_ex_functions wolfSSL_CRYPTO_set_mem_ex_functions 106 #define FIPS_mode wolfSSL_FIPS_mode 107 #define FIPS_mode_set wolfSSL_FIPS_mode_set 108 #define CRYPTO_THREADID_set_callback wolfSSL_THREADID_set_callback 109 #define CRYPTO_THREADID_set_numeric wolfSSL_THREADID_set_numeric 110 #define CRYPTO_THREADID_current wolfSSL_THREADID_current 111 #define CRYPTO_THREADID_hash wolfSSL_THREADID_hash 112 113 #define CRYPTO_r_lock wc_LockMutex_ex 114 #define CRYPTO_unlock wc_LockMutex_ex 115 116 #define CRYPTO_THREAD_lock wc_LockMutex 117 #define CRYPTO_THREAD_r_lock wc_LockMutex 118 #define CRYPTO_THREAD_unlock wc_UnLockMutex 119 120 #define CRYPTO_THREAD_lock_new wc_InitAndAllocMutex 121 #define CRYPTO_THREAD_read_lock wc_LockMutex 122 #define CRYPTO_THREAD_write_lock wc_LockMutex 123 #define CRYPTO_THREAD_lock_free wc_FreeMutex 124 125 #define CRYPTO_set_ex_data wolfSSL_CRYPTO_set_ex_data 126 127 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_EX_DATA */ 128 129 #endif /* header */ 130