26#ifndef WOLF_CRYPT_TYPES_H
27#define WOLF_CRYPT_TYPES_H
29 #include <wolfssl/wolfcrypt/settings.h>
45 #if defined(HAVE_EX_DATA) || defined(FORTRESS)
46 typedef struct WOLFSSL_CRYPTO_EX_DATA {
47 void* ex_data[MAX_EX_DATA];
48 } WOLFSSL_CRYPTO_EX_DATA;
51 #if defined(WORDS_BIGENDIAN)
52 #define BIG_ENDIAN_ORDER
55 #ifndef BIG_ENDIAN_ORDER
56 #define LITTLE_ENDIAN_ORDER
61 typedef unsigned char byte;
64 typedef unsigned int word16;
65 typedef unsigned long word32;
67 typedef unsigned short word16;
68 typedef unsigned int word32;
70 typedef byte word24[3];
75 #ifdef WOLFSSL_NO_CONSTCHARCONST
76 typedef const char* wcchar;
78 typedef const char*
const wcchar;
83 #if defined(_MSC_VER) || defined(HAVE_LIMITS_H)
84 #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG)
86 #if defined(ULONG_MAX) && (ULONG_MAX == 0xffffffffUL)
89 #if defined(ULLONG_MAX) && (ULLONG_MAX == 0xffffffffffffffffULL)
90 #define SIZEOF_LONG_LONG 8
93 #elif !defined(__BCPLUSPLUS__) && !defined(__EMSCRIPTEN__)
94 #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG)
95 #if (defined(__alpha__) || defined(__ia64__) || \
96 defined(_ARCH_PPC64) || defined(__mips64) || \
97 defined(__x86_64__) || defined(__s390x__ ) || \
98 ((defined(sun) || defined(__sun)) && \
99 (defined(LP64) || defined(_LP64))))
101 #define SIZEOF_LONG 8
102 #elif defined(__i386__) || defined(__CORTEX_M3__)
104 #define SIZEOF_LONG_LONG 8
109 #if defined(_MSC_VER) || defined(__BCPLUSPLUS__)
110 #define WORD64_AVAILABLE
111 #define W64LIT(x) x##ui64
112 typedef unsigned __int64 word64;
113 #elif defined(__EMSCRIPTEN__)
114 #define WORD64_AVAILABLE
115 #define W64LIT(x) x##ull
116 typedef unsigned long long word64;
117 #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8
118 #define WORD64_AVAILABLE
119 #define W64LIT(x) x##LL
120 typedef unsigned long word64;
121 #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8
122 #define WORD64_AVAILABLE
123 #define W64LIT(x) x##LL
124 typedef unsigned long long word64;
125 #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8
126 #define WORD64_AVAILABLE
127 #define W64LIT(x) x##LL
128 typedef unsigned long long word64;
131#if !defined(NO_64BIT) && defined(WORD64_AVAILABLE) && !defined(WC_16BIT_CPU)
133 #if (defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \
134 defined(__mips64) || defined(__x86_64__) || defined(_M_X64)) || \
135 defined(__aarch64__) || defined(__sparc64__) || defined(__s390x__ ) || \
136 (defined(__riscv_xlen) && (__riscv_xlen == 64))
137 typedef word64 wolfssl_word;
139 #elif (defined(sun) || defined(__sun)) && \
140 (defined(LP64) || defined(_LP64))
145 typedef word64 wolfssl_word;
148 typedef word32 wolfssl_word;
149 #ifdef WORD64_AVAILABLE
150 #define WOLFCRYPT_SLOW_WORD64
154#elif defined(WC_16BIT_CPU)
155 #undef WORD64_AVAILABLE
156 typedef word16 wolfssl_word;
161 #undef WORD64_AVAILABLE
162 typedef word32 wolfssl_word;
168 WOLFSSL_WORD_SIZE =
sizeof(wolfssl_word),
169 WOLFSSL_BIT_SIZE = 8,
170 WOLFSSL_WORD_BITS = WOLFSSL_WORD_SIZE * WOLFSSL_BIT_SIZE
173 #define WOLFSSL_MAX_16BIT 0xffffU
179 #define WC_INLINE __inline
180 #elif defined(__GNUC__)
181 #ifdef WOLFSSL_VXWORKS
182 #define WC_INLINE __inline__
184 #define WC_INLINE inline
186 #elif defined(__IAR_SYSTEMS_ICC__)
187 #define WC_INLINE inline
188 #elif defined(THREADX)
189 #define WC_INLINE _Inline
190 #elif defined(__ghc__)
192 #define WC_INLINE __inline
194 #define WC_INLINE inline
204 #if defined(HAVE_FIPS) || defined(HAVE_SELFTEST)
205 #define INLINE WC_INLINE
210 #if (defined(_MSC_VER) || defined(__BCPLUSPLUS__)) && \
211 !defined(WOLFSSL_SGX) && !defined(INTIME_RTOS)
212 #define INTEL_INTRINSICS
214 #elif defined(__MWERKS__) && TARGET_CPU_PPC
215 #define PPC_INTRINSICS
217 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
225 #ifdef HAVE_THREAD_LS
226 #if defined(_MSC_VER)
227 #define THREAD_LS_T __declspec(thread)
229 #elif defined(FREERTOS) || defined(FREERTOS_TCP) || \
230 defined(WOLFSSL_ZEPHYR)
233 #define THREAD_LS_T __thread
244 #if defined(__GNUC__)
245 #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1)))
247 #define FALL_THROUGH __attribute__ ((fallthrough));
253 #if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \
254 !defined(FREERTOS_TCP) && !defined(EBSNET) && \
255 !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS)
256 #define USE_WINDOWS_API
259 #define XSTR_SIZEOF(x) (sizeof(x) - 1)
265 #if defined(HAVE_IO_POOL)
266 WOLFSSL_API
void*
XMALLOC(
size_t n,
void* heap,
int type);
267 WOLFSSL_API
void*
XREALLOC(
void *p,
size_t n,
void* heap,
int type);
268 WOLFSSL_API
void XFREE(
void *p,
void* heap,
int type);
269 #elif (defined(WOLFSSL_ASYNC_CRYPT) && defined(HAVE_INTEL_QA)) || \
270 defined(HAVE_INTEL_QA_SYNC)
271 #ifndef HAVE_INTEL_QA_SYNC
272 #include <wolfssl/wolfcrypt/port/intel/quickassist_mem.h>
273 #undef USE_WOLFSSL_MEMORY
274 #ifdef WOLFSSL_DEBUG_MEMORY
275 #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t), __func__, __LINE__)
276 #define XFREE(p, h, t) IntelQaFree((p), (h), (t), __func__, __LINE__)
277 #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t), __func__, __LINE__)
279 #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t))
280 #define XFREE(p, h, t) IntelQaFree((p), (h), (t))
281 #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t))
284 #include <wolfssl/wolfcrypt/port/intel/quickassist_sync.h>
285 #undef USE_WOLFSSL_MEMORY
286 #ifdef WOLFSSL_DEBUG_MEMORY
287 #define XMALLOC(s, h, t) wc_CryptoCb_IntelQaMalloc((s), (h), (t), __func__, __LINE__)
288 #define XFREE(p, h, t) wc_CryptoCb_IntelQaFree((p), (h), (t), __func__, __LINE__)
289 #define XREALLOC(p, n, h, t) wc_CryptoCb_IntelQaRealloc((p), (n), (h), (t), __func__, __LINE__)
291 #define XMALLOC(s, h, t) wc_CryptoCb_IntelQaMalloc((s), (h), (t))
292 #define XFREE(p, h, t) wc_CryptoCb_IntelQaFree((p), (h), (t))
293 #define XREALLOC(p, n, h, t) wc_CryptoCb_IntelQaRealloc((p), (n), (h), (t))
296 #elif defined(XMALLOC_USER)
299 extern void *
XMALLOC(
size_t n,
void* heap,
int type);
300 extern void *
XREALLOC(
void *p,
size_t n,
void* heap,
int type);
301 extern void XFREE(
void *p,
void* heap,
int type);
302 #elif defined(WOLFSSL_MEMORY_LOG)
303 #define XMALLOC(n, h, t) xmalloc(n, h, t, __func__, __FILE__, __LINE__)
304 #define XREALLOC(p, n, h, t) xrealloc(p, n, h, t, __func__, __FILE__, __LINE__)
305 #define XFREE(p, h, t) xfree(p, h, t, __func__, __FILE__, __LINE__)
310 WOLFSSL_API
void *xmalloc(
size_t n,
void* heap,
int type,
311 const char* func,
const char* file,
unsigned int line);
312 WOLFSSL_API
void *xrealloc(
void *p,
size_t n,
void* heap,
int type,
313 const char* func,
const char* file,
unsigned int line);
314 WOLFSSL_API
void xfree(
void *p,
void* heap,
int type,
const char* func,
315 const char* file,
unsigned int line);
316 #elif defined(XMALLOC_OVERRIDE)
318 #elif defined(WOLFSSL_TELIT_M2MB)
321 #define XMALLOC(s, h, t) ((void)h, (void)t, m2mb_os_malloc((s)))
322 #define XFREE(p, h, t) {void* xp = (p); if((xp)) m2mb_os_free((xp));}
323 #define XREALLOC(p, n, h, t) m2mb_os_realloc((p), (n))
325 #elif defined(NO_WOLFSSL_MEMORY)
326 #ifdef WOLFSSL_NO_MALLOC
328 #ifdef WOLFSSL_MALLOC_CHECK
330 static inline void* malloc_check(
size_t sz) {
331 printf(
"wolfSSL_malloc failed");
334 #define XMALLOC(s, h, t) malloc_check((s))
335 #define XFREE(p, h, t)
336 #define XREALLOC(p, n, h, t) (NULL)
338 #define XMALLOC(s, h, t) (NULL)
339 #define XFREE(p, h, t)
340 #define XREALLOC(p, n, h, t) (NULL)
345 #define XMALLOC(s, h, t) malloc((s))
346 #define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));}
347 #define XREALLOC(p, n, h, t) realloc((p), (n))
349 #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \
350 && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \
351 && !defined(FREESCALE_KSDK_MQX) && !defined(FREESCALE_FREE_RTOS) \
352 && !defined(WOLFSSL_LEANPSK) && !defined(WOLFSSL_uITRON4)
355 #ifdef WOLFSSL_STATIC_MEMORY
356 #ifdef WOLFSSL_DEBUG_MEMORY
357 #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t), __func__, __LINE__)
358 #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t), __func__, __LINE__);}
359 #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t), __func__, __LINE__)
361 #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t))
362 #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t));}
363 #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t))
365 #elif !defined(FREERTOS) && !defined(FREERTOS_TCP)
366 #ifdef WOLFSSL_DEBUG_MEMORY
367 #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s), __func__, __LINE__))
368 #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), __func__, __LINE__);}
369 #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), __func__, __LINE__)
371 #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s)))
372 #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));}
373 #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n))
379 #ifdef WOLFSSL_ASYNC_CRYPT
380 #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \
381 VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT);
382 #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \
383 VAR_TYPE* VAR_NAME = ({ \
384 VAR_TYPE* ptr = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \
385 if (ptr && INIT_VALUE) { \
386 XMEMCPY(ptr, INIT_VALUE, sizeof(VAR_TYPE) * VAR_SIZE); \
390 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
391 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \
393 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
394 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \
396 #define FREE_VAR(VAR_NAME, HEAP) \
397 XFREE(VAR_NAME, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT);
398 #define FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) \
399 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
400 XFREE(VAR_NAME[idx##VAR_NAME], (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \
403 #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
404 DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP)
405 #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP)
406 #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \
407 FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP)
409 #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \
410 VAR_TYPE VAR_NAME[VAR_SIZE]
411 #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \
412 VAR_TYPE* VAR_NAME = (VAR_TYPE*)INIT_VALUE
413 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
414 VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE]
415 #define FREE_VAR(VAR_NAME, HEAP)
416 #define FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP)
418 #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
419 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \
421 #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
422 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
423 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \
425 #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \
426 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
427 XFREE(VAR_NAME[idx##VAR_NAME], (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \
431 #if !defined(USE_WOLF_STRTOK) && \
432 ((defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) || \
433 defined(WOLFSSL_TIRTOS) || defined(WOLF_C99))
434 #define USE_WOLF_STRTOK
436 #if !defined(USE_WOLF_STRSEP) && (defined(WOLF_C99))
437 #define USE_WOLF_STRSEP
442 #define XMEMCPY(d,s,l) memcpy((d),(s),(l))
443 #define XMEMSET(b,c,l) memset((b),(c),(l))
444 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n))
445 #define XMEMMOVE(d,s,l) memmove((d),(s),(l))
447 #define XSTRLEN(s1) strlen((s1))
448 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n))
451 #define XSTRSTR(s1,s2) strstr((s1),(s2))
452 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
453 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
454 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
456 #ifdef USE_WOLF_STRSEP
457 #define XSTRSEP(s1,d) wc_strsep((s1),(d))
459 #define XSTRSEP(s1,d) strsep((s1),(d))
463 #if defined(MICROCHIP_PIC32) || defined(WOLFSSL_TIRTOS) || \
464 defined(WOLFSSL_ZEPHYR)
466 #define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n))
467 #elif defined(USE_WINDOWS_API) || defined(FREERTOS_TCP_WINSIM)
468 #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
470 #if defined(HAVE_STRINGS_H) && defined(WOLF_C99) && \
471 !defined(WOLFSSL_SGX)
474 #if defined(WOLFSSL_DEOS)
475 #define XSTRNCASECMP(s1,s2,n) strnicmp((s1),(s2),(n))
477 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n))
484 #ifndef USE_WINDOWS_API
486 #if defined(NO_FILESYSTEM) && (defined(OPENSSL_EXTRA) || \
487 defined(HAVE_PKCS7)) && !defined(NO_STDIO_FILESYSTEM)
492 #define XSNPRINTF snprintf
495 #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__)
496 #if defined(_MSC_VER) && (_MSC_VER >= 1900)
502 #define XSNPRINTF snprintf
506 #if !defined(__MINGW32__)
507 #pragma warning(disable: 4996)
510 int xsnprintf(
char *buffer,
size_t bufsize,
511 const char *format, ...) {
515 if ((
int)bufsize <= 0)
return -1;
516 va_start(ap, format);
517 ret = vsnprintf(buffer, bufsize, format, ap);
518 if (ret >= (
int)bufsize)
523 #define XSNPRINTF xsnprintf
526 #define XSNPRINTF snprintf
530 #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) \
531 || defined(HAVE_ALPN)
533 #if defined(USE_WOLF_STRTOK)
534 #define XSTRTOK(s1,d,ptr) wc_strtok((s1),(d),(ptr))
535 #elif defined(USE_WINDOWS_API) || defined(INTIME_RTOS)
536 #define XSTRTOK(s1,d,ptr) strtok_s((s1),(d),(ptr))
538 #define XSTRTOK(s1,d,ptr) strtok_r((s1),(d),(ptr))
542 #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_OCSP) || \
543 defined(HAVE_CRL_IO) || defined(HAVE_HTTP_CLIENT) || \
544 !defined(NO_CRYPT_BENCHMARK)
548 #define XATOI(s) atoi((s))
553 #ifdef USE_WOLF_STRTOK
554 WOLFSSL_API
char* wc_strtok(
char *str,
const char *delim,
char **nextp);
556 #ifdef USE_WOLF_STRSEP
557 WOLFSSL_API
char* wc_strsep(
char **stringp,
const char *delim);
560 #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \
561 !defined(NO_STDIO_FILESYSTEM)
564 #define XGETENV getenv
570 #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \
571 defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA)
572 #define XTOUPPER(c) toupper((c))
573 #define XISALPHA(c) isalpha((c))
576 #define XTOLOWER(c) tolower((c))
583 DYNAMIC_TYPE_CERT = 2,
584 DYNAMIC_TYPE_KEY = 3,
585 DYNAMIC_TYPE_FILE = 4,
586 DYNAMIC_TYPE_SUBJECT_CN = 5,
587 DYNAMIC_TYPE_PUBLIC_KEY = 6,
588 DYNAMIC_TYPE_SIGNER = 7,
589 DYNAMIC_TYPE_NONE = 8,
590 DYNAMIC_TYPE_BIGINT = 9,
591 DYNAMIC_TYPE_RSA = 10,
592 DYNAMIC_TYPE_METHOD = 11,
593 DYNAMIC_TYPE_OUT_BUFFER = 12,
594 DYNAMIC_TYPE_IN_BUFFER = 13,
595 DYNAMIC_TYPE_INFO = 14,
596 DYNAMIC_TYPE_DH = 15,
597 DYNAMIC_TYPE_DOMAIN = 16,
598 DYNAMIC_TYPE_SSL = 17,
599 DYNAMIC_TYPE_CTX = 18,
600 DYNAMIC_TYPE_WRITEV = 19,
601 DYNAMIC_TYPE_OPENSSL = 20,
602 DYNAMIC_TYPE_DSA = 21,
603 DYNAMIC_TYPE_CRL = 22,
604 DYNAMIC_TYPE_REVOKED = 23,
605 DYNAMIC_TYPE_CRL_ENTRY = 24,
606 DYNAMIC_TYPE_CERT_MANAGER = 25,
607 DYNAMIC_TYPE_CRL_MONITOR = 26,
608 DYNAMIC_TYPE_OCSP_STATUS = 27,
609 DYNAMIC_TYPE_OCSP_ENTRY = 28,
610 DYNAMIC_TYPE_ALTNAME = 29,
611 DYNAMIC_TYPE_SUITES = 30,
612 DYNAMIC_TYPE_CIPHER = 31,
613 DYNAMIC_TYPE_RNG = 32,
614 DYNAMIC_TYPE_ARRAYS = 33,
615 DYNAMIC_TYPE_DTLS_POOL = 34,
616 DYNAMIC_TYPE_SOCKADDR = 35,
617 DYNAMIC_TYPE_LIBZ = 36,
618 DYNAMIC_TYPE_ECC = 37,
619 DYNAMIC_TYPE_TMP_BUFFER = 38,
620 DYNAMIC_TYPE_DTLS_MSG = 39,
621 DYNAMIC_TYPE_X509 = 40,
622 DYNAMIC_TYPE_TLSX = 41,
623 DYNAMIC_TYPE_OCSP = 42,
624 DYNAMIC_TYPE_SIGNATURE = 43,
625 DYNAMIC_TYPE_HASHES = 44,
626 DYNAMIC_TYPE_SRP = 45,
627 DYNAMIC_TYPE_COOKIE_PWD = 46,
628 DYNAMIC_TYPE_USER_CRYPTO = 47,
629 DYNAMIC_TYPE_OCSP_REQUEST = 48,
630 DYNAMIC_TYPE_X509_EXT = 49,
631 DYNAMIC_TYPE_X509_STORE = 50,
632 DYNAMIC_TYPE_X509_CTX = 51,
633 DYNAMIC_TYPE_URL = 52,
634 DYNAMIC_TYPE_DTLS_FRAG = 53,
635 DYNAMIC_TYPE_DTLS_BUFFER = 54,
636 DYNAMIC_TYPE_SESSION_TICK = 55,
637 DYNAMIC_TYPE_PKCS = 56,
638 DYNAMIC_TYPE_MUTEX = 57,
639 DYNAMIC_TYPE_PKCS7 = 58,
640 DYNAMIC_TYPE_AES_BUFFER = 59,
641 DYNAMIC_TYPE_WOLF_BIGINT = 60,
642 DYNAMIC_TYPE_ASN1 = 61,
643 DYNAMIC_TYPE_LOG = 62,
644 DYNAMIC_TYPE_WRITEDUP = 63,
645 DYNAMIC_TYPE_PRIVATE_KEY = 64,
646 DYNAMIC_TYPE_HMAC = 65,
647 DYNAMIC_TYPE_ASYNC = 66,
648 DYNAMIC_TYPE_ASYNC_NUMA = 67,
649 DYNAMIC_TYPE_ASYNC_NUMA64 = 68,
650 DYNAMIC_TYPE_CURVE25519 = 69,
651 DYNAMIC_TYPE_ED25519 = 70,
652 DYNAMIC_TYPE_SECRET = 71,
653 DYNAMIC_TYPE_DIGEST = 72,
654 DYNAMIC_TYPE_RSA_BUFFER = 73,
655 DYNAMIC_TYPE_DCERT = 74,
656 DYNAMIC_TYPE_STRING = 75,
657 DYNAMIC_TYPE_PEM = 76,
658 DYNAMIC_TYPE_DER = 77,
659 DYNAMIC_TYPE_CERT_EXT = 78,
660 DYNAMIC_TYPE_ALPN = 79,
661 DYNAMIC_TYPE_ENCRYPTEDINFO= 80,
662 DYNAMIC_TYPE_DIRCTX = 81,
663 DYNAMIC_TYPE_HASHCTX = 82,
664 DYNAMIC_TYPE_SEED = 83,
665 DYNAMIC_TYPE_SYMMETRIC_KEY= 84,
666 DYNAMIC_TYPE_ECC_BUFFER = 85,
667 DYNAMIC_TYPE_QSH = 86,
668 DYNAMIC_TYPE_SALT = 87,
669 DYNAMIC_TYPE_HASH_TMP = 88,
670 DYNAMIC_TYPE_BLOB = 89,
671 DYNAMIC_TYPE_NAME_ENTRY = 90,
672 DYNAMIC_TYPE_CURVE448 = 91,
673 DYNAMIC_TYPE_ED448 = 92,
674 DYNAMIC_TYPE_SNIFFER_SERVER = 1000,
675 DYNAMIC_TYPE_SNIFFER_SESSION = 1001,
676 DYNAMIC_TYPE_SNIFFER_PB = 1002,
677 DYNAMIC_TYPE_SNIFFER_PB_BUFFER = 1003,
678 DYNAMIC_TYPE_SNIFFER_TICKET_ID = 1004,
679 DYNAMIC_TYPE_SNIFFER_NAMED_KEY = 1005,
683 #ifndef WOLFSSL_MAX_ERROR_SZ
684 #define WOLFSSL_MAX_ERROR_SZ 80
695 WC_ALGO_TYPE_NONE = 0,
696 WC_ALGO_TYPE_HASH = 1,
697 WC_ALGO_TYPE_CIPHER = 2,
699 WC_ALGO_TYPE_RNG = 4,
700 WC_ALGO_TYPE_SEED = 5,
701 WC_ALGO_TYPE_HMAC = 6,
703 WC_ALGO_TYPE_MAX = WC_ALGO_TYPE_HMAC
708 #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS)
712 WC_HASH_TYPE_NONE = 15,
713 WC_HASH_TYPE_MD2 = 16,
714 WC_HASH_TYPE_MD4 = 17,
715 WC_HASH_TYPE_MD5 = 0,
716 WC_HASH_TYPE_SHA = 1,
717 WC_HASH_TYPE_SHA224 = 8,
718 WC_HASH_TYPE_SHA256 = 2,
719 WC_HASH_TYPE_SHA384 = 5,
720 WC_HASH_TYPE_SHA512 = 4,
721 WC_HASH_TYPE_MD5_SHA = 18,
722 WC_HASH_TYPE_SHA3_224 = 10,
723 WC_HASH_TYPE_SHA3_256 = 11,
724 WC_HASH_TYPE_SHA3_384 = 12,
725 WC_HASH_TYPE_SHA3_512 = 13,
726 WC_HASH_TYPE_BLAKE2B = 14,
727 WC_HASH_TYPE_BLAKE2S = 19,
729 WC_HASH_TYPE_MAX = WC_HASH_TYPE_BLAKE2S
731 WC_HASH_TYPE_NONE = 0,
732 WC_HASH_TYPE_MD2 = 1,
733 WC_HASH_TYPE_MD4 = 2,
734 WC_HASH_TYPE_MD5 = 3,
735 WC_HASH_TYPE_SHA = 4,
736 WC_HASH_TYPE_SHA224 = 5,
737 WC_HASH_TYPE_SHA256 = 6,
738 WC_HASH_TYPE_SHA384 = 7,
739 WC_HASH_TYPE_SHA512 = 8,
740 WC_HASH_TYPE_MD5_SHA = 9,
741 WC_HASH_TYPE_SHA3_224 = 10,
742 WC_HASH_TYPE_SHA3_256 = 11,
743 WC_HASH_TYPE_SHA3_384 = 12,
744 WC_HASH_TYPE_SHA3_512 = 13,
745 WC_HASH_TYPE_BLAKE2B = 14,
746 WC_HASH_TYPE_BLAKE2S = 15,
748 WC_HASH_TYPE_MAX = WC_HASH_TYPE_BLAKE2S
756 WC_CIPHER_AES_CBC = 2,
757 WC_CIPHER_AES_GCM = 3,
758 WC_CIPHER_AES_CTR = 4,
759 WC_CIPHER_AES_XTS = 5,
760 WC_CIPHER_AES_CFB = 6,
763 WC_CIPHER_CHACHA = 9,
764 WC_CIPHER_HC128 = 10,
767 WC_CIPHER_MAX = WC_CIPHER_HC128
776 WC_PK_TYPE_ECDSA_SIGN = 4,
777 WC_PK_TYPE_ECDSA_VERIFY = 5,
778 WC_PK_TYPE_ED25519 = 6,
779 WC_PK_TYPE_CURVE25519 = 7,
780 WC_PK_TYPE_RSA_KEYGEN = 8,
781 WC_PK_TYPE_EC_KEYGEN = 9,
783 WC_PK_TYPE_MAX = WC_PK_TYPE_EC_KEYGEN
789 #if !defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG)
791 #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
793 #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
795 #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4)
797 #elif defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG)
799 #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
801 #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8)
803 #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4)
806 #error "bad math long / long long settings"
816 #define CheckCtcSettings() (CTC_SETTINGS == CheckRunTimeSettings())
819 #define INVALID_DEVID -2
824 #if defined(WOLFSSL_AESNI) || defined(WOLFSSL_ARMASM) || \
825 defined(USE_INTEL_SPEEDUP) || defined(WOLFSSL_AFALG_XILINX)
826 #if !defined(ALIGN16)
827 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
828 #define ALIGN16 __attribute__ ( (aligned (16)))
829 #elif defined(_MSC_VER)
831 #pragma warning(disable: 4324)
832 #define ALIGN16 __declspec (align (16))
838 #if !defined (ALIGN32)
839 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
840 #define ALIGN32 __attribute__ ( (aligned (32)))
841 #elif defined(_MSC_VER)
843 #pragma warning(disable: 4324)
844 #define ALIGN32 __declspec (align (32))
850 #if !defined(ALIGN64)
851 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
852 #define ALIGN64 __attribute__ ( (aligned (64)))
853 #elif defined(_MSC_VER)
855 #pragma warning(disable: 4324)
856 #define ALIGN64 __declspec (align (64))
862 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
863 #define ALIGN128 __attribute__ ( (aligned (128)))
864 #elif defined(_MSC_VER)
866 #pragma warning(disable: 4324)
867 #define ALIGN128 __declspec (align (128))
872 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
873 #define ALIGN256 __attribute__ ( (aligned (256)))
874 #elif defined(_MSC_VER)
876 #pragma warning(disable: 4324)
877 #define ALIGN256 __declspec (align (256))
909 #if defined(HAVE_STACK_SIZE)
910 #define EXIT_TEST(ret) return (void*)((size_t)(ret))
912 #define EXIT_TEST(ret) return ret
916 #if (defined(__IAR_SYSTEMS_ICC__) && (__IAR_SYSTEMS_ICC__ > 8)) || \
918 #define WOLFSSL_PACK __attribute__ ((packed))
923 #ifndef __GNUC_PREREQ
924 #if defined(__GNUC__) && defined(__GNUC_MINOR__)
925 #define __GNUC_PREREQ(maj, min) \
926 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
928 #define __GNUC_PREREQ(maj, min) (0)
932 #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__)
933 #define WC_NORETURN __attribute__((noreturn))
938 #if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \
939 defined(WOLFSSL_DEBUG_MATH) || defined(DEBUG_WOLFSSL) || \
940 defined(WOLFSSL_PUBLIC_MP) || defined(OPENSSL_EXTRA) || \
941 (defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT))
942 #undef WC_MP_TO_RADIX
943 #define WC_MP_TO_RADIX
WOLFSSL_API word32 CheckRunTimeSettings(void)
This function checks the compile time class settings. It is important when a user is using a wolfCryp...
Definition integer.c:103
WOLFSSL_API void * XREALLOC(void *p, size_t n, void *heap, int type)
This is not actually a function, but rather a preprocessor macro, which allows the user to substitute...
Definition memory.c:994
WOLFSSL_API void * XMALLOC(size_t n, void *heap, int type)
This is not actually a function, but rather a preprocessor macro, which allows the user to substitute...
Definition memory.c:973
WOLFSSL_API void XFREE(void *p, void *heap, int type)
This is not actually a function, but rather a preprocessor macro, which allows the user to substitute...
Definition memory.c:1015