crypto.h 5.9 KB

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