crypto.h (6082B)
1 /* crypto.h 2 * 3 * Copyright (C) 2006-2025 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 3 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/openssl/compat_types.h> 28 29 typedef struct WOLFSSL_INIT_SETTINGS { 30 char* appname; 31 } WOLFSSL_INIT_SETTINGS; 32 #ifndef OPENSSL_COEXIST 33 #define OPENSSL_INIT_SETTINGS WOLFSSL_INIT_SETTINGS 34 #endif 35 36 typedef struct WOLFSSL_CRYPTO_THREADID { 37 int dummy; 38 } WOLFSSL_CRYPTO_THREADID; 39 #ifndef OPENSSL_COEXIST 40 typedef struct crypto_threadid_st CRYPTO_THREADID; 41 #endif 42 43 #ifndef OPENSSL_COEXIST 44 typedef struct CRYPTO_EX_DATA CRYPTO_EX_DATA; 45 #endif 46 47 #ifdef HAVE_EX_DATA 48 typedef WOLFSSL_CRYPTO_EX_new CRYPTO_new_func; 49 typedef WOLFSSL_CRYPTO_EX_dup CRYPTO_dup_func; 50 typedef WOLFSSL_CRYPTO_EX_free CRYPTO_free_func; 51 #endif 52 53 #include <wolfssl/openssl/opensslv.h> 54 #include <wolfssl/openssl/conf.h> 55 56 #ifdef WOLFSSL_PREFIX 57 #include "prefix_crypto.h" 58 #endif 59 60 #ifdef __cplusplus 61 extern "C" { 62 #endif 63 64 WOLFSSL_API const char* wolfSSLeay_version(int type); 65 WOLFSSL_API unsigned long wolfSSLeay(void); 66 WOLFSSL_API unsigned long wolfSSL_OpenSSL_version_num(void); 67 68 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 69 WOLFSSL_API void wolfSSL_OPENSSL_free(void* p); 70 #endif 71 72 #ifdef OPENSSL_EXTRA 73 WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); 74 WOLFSSL_API int wolfSSL_OPENSSL_hexchar2int(unsigned char c); 75 WOLFSSL_API unsigned char *wolfSSL_OPENSSL_hexstr2buf(const char *str, long *len); 76 77 WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const WOLFSSL_INIT_SETTINGS *settings); 78 #endif 79 80 /* class index for wolfSSL_CRYPTO_get_ex_new_index */ 81 82 #ifndef OPENSSL_COEXIST 83 84 #define CRYPTO_EX_INDEX_SSL WOLF_CRYPTO_EX_INDEX_SSL 85 #define CRYPTO_EX_INDEX_SSL_CTX WOLF_CRYPTO_EX_INDEX_SSL_CTX 86 #define CRYPTO_EX_INDEX_SSL_SESSION WOLF_CRYPTO_EX_INDEX_SSL_SESSION 87 #define CRYPTO_EX_INDEX_X509 WOLF_CRYPTO_EX_INDEX_X509 88 #define CRYPTO_EX_INDEX_X509_STORE WOLF_CRYPTO_EX_INDEX_X509_STORE 89 #define CRYPTO_EX_INDEX_X509_STORE_CTX WOLF_CRYPTO_EX_INDEX_X509_STORE_CTX 90 #define CRYPTO_EX_INDEX_DH WOLF_CRYPTO_EX_INDEX_DH 91 #define CRYPTO_EX_INDEX_DSA WOLF_CRYPTO_EX_INDEX_DSA 92 #define CRYPTO_EX_INDEX_EC_KEY WOLF_CRYPTO_EX_INDEX_EC_KEY 93 #define CRYPTO_EX_INDEX_RSA WOLF_CRYPTO_EX_INDEX_RSA 94 #define CRYPTO_EX_INDEX_ENGINE WOLF_CRYPTO_EX_INDEX_ENGINE 95 #define CRYPTO_EX_INDEX_UI WOLF_CRYPTO_EX_INDEX_UI 96 #define CRYPTO_EX_INDEX_BIO WOLF_CRYPTO_EX_INDEX_BIO 97 #define CRYPTO_EX_INDEX_APP WOLF_CRYPTO_EX_INDEX_APP 98 #define CRYPTO_EX_INDEX_UI_METHOD WOLF_CRYPTO_EX_INDEX_UI_METHOD 99 #define CRYPTO_EX_INDEX_DRBG WOLF_CRYPTO_EX_INDEX_DRBG 100 #define CRYPTO_EX_INDEX__COUNT WOLF_CRYPTO_EX_INDEX__COUNT 101 102 #define crypto_threadid_st WOLFSSL_CRYPTO_THREADID 103 #define CRYPTO_THREADID WOLFSSL_CRYPTO_THREADID 104 105 #define SSLeay_version wolfSSLeay_version 106 #define SSLeay wolfSSLeay 107 #define OpenSSL_version_num wolfSSL_OpenSSL_version_num 108 #define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER 109 #define SSLEAY_VERSION OPENSSL_VERSION 110 111 #define CRYPTO_lock wc_LockMutex_ex 112 113 /* this function was used to set the default malloc, free, and realloc */ 114 #define CRYPTO_malloc_init() 0 /* CRYPTO_malloc_init is not needed */ 115 116 #define OPENSSL_free wolfSSL_OPENSSL_free 117 #define OPENSSL_malloc wolfSSL_OPENSSL_malloc 118 #define OPENSSL_hexchar2int wolfSSL_OPENSSL_hexchar2int 119 #define OPENSSL_hexstr2buf wolfSSL_OPENSSL_hexstr2buf 120 121 #define OPENSSL_INIT_ENGINE_ALL_BUILTIN 0x00000001L 122 #define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L 123 #define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L 124 #define OPENSSL_INIT_LOAD_CONFIG 0x00000040L 125 126 #define OPENSSL_init_crypto wolfSSL_OPENSSL_init_crypto 127 128 #ifdef WOLFSSL_OPENVPN 129 # define OPENSSL_assert(e) \ 130 if (!(e)) { \ 131 fprintf(stderr, "%s:%d wolfSSL internal error: assertion failed: " #e, \ 132 __FILE__, __LINE__); \ 133 raise(SIGABRT); \ 134 _exit(3); \ 135 } 136 #endif 137 138 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ 139 defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_EX_DATA) 140 #define CRYPTO_set_mem_ex_functions wolfSSL_CRYPTO_set_mem_ex_functions 141 #define FIPS_mode wolfSSL_FIPS_mode 142 #define FIPS_mode_set wolfSSL_FIPS_mode_set 143 #define CRYPTO_THREADID_set_callback wolfSSL_THREADID_set_callback 144 #define CRYPTO_THREADID_set_numeric wolfSSL_THREADID_set_numeric 145 #define CRYPTO_THREADID_current wolfSSL_THREADID_current 146 #define CRYPTO_THREADID_hash wolfSSL_THREADID_hash 147 148 #define CRYPTO_r_lock wc_LockMutex_ex 149 #define CRYPTO_unlock wc_LockMutex_ex 150 151 #define CRYPTO_THREAD_lock wc_LockMutex 152 #define CRYPTO_THREAD_r_lock wc_LockMutex 153 #define CRYPTO_THREAD_unlock wc_UnLockMutex 154 155 #define CRYPTO_THREAD_lock_new wc_InitAndAllocMutex 156 #define CRYPTO_THREAD_read_lock wc_LockMutex 157 #define CRYPTO_THREAD_write_lock wc_LockMutex 158 #define CRYPTO_THREAD_lock_free wc_FreeMutex 159 160 #define CRYPTO_get_ex_data wolfSSL_CRYPTO_get_ex_data 161 #define CRYPTO_set_ex_data wolfSSL_CRYPTO_set_ex_data 162 163 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_EX_DATA */ 164 165 #endif /* !OPENSSL_COEXIST */ 166 167 #ifdef __cplusplus 168 } /* extern "C" */ 169 #endif 170 171 #endif /* header */