- Timestamp:
- Jun 22, 2021, 9:00:19 PM (3 years ago)
- Location:
- azure_iot_hub_f767zi/trunk/wolfssl-4.7.0
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/wolfcrypt/types.h
r457 r464 23 23 \file wolfssl/wolfcrypt/types.h 24 24 */ 25 25 /* 26 DESCRIPTION 27 This library defines the primitive data types and abstraction macros to 28 decouple library dependencies with standard string, memory and so on. 29 30 */ 26 31 #ifndef WOLF_CRYPT_TYPES_H 27 32 #define WOLF_CRYPT_TYPES_H … … 60 65 #ifndef byte 61 66 typedef unsigned char byte; 67 typedef signed char sword8; 68 typedef unsigned char word8; 62 69 #endif 63 70 #ifdef WC_16BIT_CPU 71 typedef int sword16; 64 72 typedef unsigned int word16; 73 typedef long sword32; 65 74 typedef unsigned long word32; 66 75 #else 76 typedef short sword16; 67 77 typedef unsigned short word16; 78 typedef int sword32; 68 79 typedef unsigned int word32; 69 80 #endif … … 110 121 #define WORD64_AVAILABLE 111 122 #define W64LIT(x) x##ui64 123 typedef __int64 sword64; 112 124 typedef unsigned __int64 word64; 113 125 #elif defined(__EMSCRIPTEN__) 114 126 #define WORD64_AVAILABLE 115 127 #define W64LIT(x) x##ull 128 typedef long long sword64; 116 129 typedef unsigned long long word64; 117 130 #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8 118 131 #define WORD64_AVAILABLE 119 132 #define W64LIT(x) x##LL 133 typedef long sword64; 120 134 typedef unsigned long word64; 121 135 #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8 122 136 #define WORD64_AVAILABLE 123 137 #define W64LIT(x) x##LL 138 typedef long long sword64; 124 139 typedef unsigned long long word64; 125 140 #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8 126 141 #define WORD64_AVAILABLE 127 142 #define W64LIT(x) x##LL 143 typedef long long sword64; 128 144 typedef unsigned long long word64; 129 145 #endif … … 150 166 #define WOLFCRYPT_SLOW_WORD64 151 167 #endif 168 #define WC_32BIT_CPU 152 169 #endif 153 170 … … 163 180 #define MP_16BIT /* for mp_int, mp_word needs to be twice as big as 164 181 mp_digit, no 64 bit type so make mp_digit 16 bit */ 182 #define WC_32BIT_CPU 165 183 #endif 166 184 … … 198 216 #endif 199 217 #else 200 #define WC_INLINE 218 #ifdef __GNUC__ 219 #define WC_INLINE __attribute__((unused)) 220 #else 221 #define WC_INLINE 222 #endif 201 223 #endif 202 224 #endif … … 245 267 #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1))) 246 268 #undef FALL_THROUGH 247 #define FALL_THROUGH __attribute__ ((fallthrough)); 269 #if defined(WOLFSSL_LINUXKM) && defined(fallthrough) 270 #define FALL_THROUGH fallthrough 271 #else 272 #define FALL_THROUGH __attribute__ ((fallthrough)); 273 #endif 248 274 #endif 249 275 #endif … … 343 369 /* just use plain C stdlib stuff if desired */ 344 370 #include <stdlib.h> 345 #define XMALLOC(s, h, t) malloc((s ))371 #define XMALLOC(s, h, t) malloc((size_t)(s)) 346 372 #define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));} 347 #define XREALLOC(p, n, h, t) realloc((p), (n)) 348 #endif 373 #define XREALLOC(p, n, h, t) realloc((p), (size_t)(n)) 374 #endif 375 376 #elif defined(WOLFSSL_LINUXKM) 377 /* the requisite linux/slab.h is included in wc_port.h, with incompatible warnings masked out. */ 378 #define XMALLOC(s, h, t) ({(void)(h); (void)(t); kmalloc(s, GFP_KERNEL);}) 379 #define XFREE(p, h, t) ({void* _xp; (void)(h); _xp = (p); if(_xp) kfree(_xp);}) 380 #define XREALLOC(p, n, h, t) ({(void)(h); (void)(t); krealloc((p), (n), GFP_KERNEL);}) 381 349 382 #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \ 350 383 && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \ … … 376 409 #endif 377 410 378 /* declare/free variable handling for async */ 379 #ifdef WOLFSSL_ASYNC_CRYPT 411 /* declare/free variable handling for async and smallstack */ 412 #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLFSSL_SMALL_STACK) 413 #define DECLARE_VAR_IS_HEAP_ALLOC 380 414 #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); \ 387 } \ 388 ptr; \ 389 }) 415 VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT) 390 416 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 391 417 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ 392 int idx##VAR_NAME ; \418 int idx##VAR_NAME, inner_idx_##VAR_NAME; \ 393 419 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ 394 420 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ 421 if (VAR_NAME[idx##VAR_NAME] == NULL) { \ 422 for (inner_idx_##VAR_NAME = 0; inner_idx_##VAR_NAME < idx##VAR_NAME; inner_idx_##VAR_NAME++) { \ 423 XFREE(VAR_NAME[inner_idx_##VAR_NAME], HEAP, DYNAMIC_TYPE_WOLF_BIGINT); \ 424 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 425 } \ 426 for (inner_idx_##VAR_NAME = idx##VAR_NAME + 1; inner_idx_##VAR_NAME < VAR_ITEMS; inner_idx_##VAR_NAME++) { \ 427 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 428 } \ 429 break; \ 430 } \ 395 431 } 396 432 #define FREE_VAR(VAR_NAME, HEAP) \ … … 407 443 FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) 408 444 #else 445 #undef DECLARE_VAR_IS_HEAP_ALLOC 409 446 #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ 410 447 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_VALUE413 448 #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 414 449 VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE] … … 418 453 #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 419 454 VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ 420 int idx##VAR_NAME ;455 int idx##VAR_NAME, inner_idx_##VAR_NAME; 421 456 #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ 422 457 for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ 423 458 VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \ 459 if (VAR_NAME[idx##VAR_NAME] == NULL) { \ 460 for (inner_idx_##VAR_NAME = 0; inner_idx_##VAR_NAME < idx##VAR_NAME; inner_idx_##VAR_NAME++) { \ 461 XFREE(VAR_NAME[inner_idx_##VAR_NAME], HEAP, DYNAMIC_TYPE_TMP_BUFFER); \ 462 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 463 } \ 464 for (inner_idx_##VAR_NAME = idx##VAR_NAME + 1; inner_idx_##VAR_NAME < VAR_ITEMS; inner_idx_##VAR_NAME++) { \ 465 VAR_NAME[inner_idx_##VAR_NAME] = NULL; \ 466 } \ 467 break; \ 468 } \ 424 469 } 425 470 #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \ … … 438 483 #endif 439 484 440 #ifndef STRING_USER 441 #include <string.h> 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)) 485 #ifndef STRING_USER 486 #if defined(WOLFSSL_LINUXKM) 487 #include <linux/string.h> 488 #else 489 #include <string.h> 490 #endif 491 492 #define XMEMCPY(d,s,l) memcpy((d),(s),(l)) 493 #define XMEMSET(b,c,l) memset((b),(c),(l)) 494 #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n)) 495 #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) 446 496 447 497 #define XSTRLEN(s1) strlen((s1)) 448 498 #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) 449 /* strstr, strncmp, and strncat only used by wolfSSL proper,499 /* strstr, strncmp, strcmp, and strncat only used by wolfSSL proper, 450 500 * not required for wolfCrypt only */ 451 501 #define XSTRSTR(s1,s2) strstr((s1),(s2)) 452 502 #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) 453 503 #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) 504 #define XSTRCMP(s1,s2) strcmp((s1),(s2)) 454 505 #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) 455 506 … … 474 525 #if defined(WOLFSSL_DEOS) 475 526 #define XSTRNCASECMP(s1,s2,n) strnicmp((s1),(s2),(n)) 527 #elif defined(WOLFSSL_CMSIS_RTOSv2) 528 #define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n)) 476 529 #else 477 530 #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) … … 490 543 #include <stdio.h> 491 544 #endif 492 #define XSNPRINTF snprintf 545 #if defined(WOLFSSL_ESPIDF) && \ 546 (!defined(NO_ASN_TIME) && defined(HAVE_PKCS7)) 547 #include<stdarg.h> 548 /* later gcc than 7.1 introduces -Wformat-truncation */ 549 /* In cases when truncation is expected the caller needs*/ 550 /* to check the return value from the function so that */ 551 /* compiler doesn't complain. */ 552 /* xtensa-esp32-elf v8.2.0 warns trancation at */ 553 /* GetAsnTimeString() */ 554 static WC_INLINE 555 int _xsnprintf_(char *s, size_t n, const char *format, ...) 556 { 557 va_list ap; 558 int ret; 559 560 if ((int)n <= 0) return -1; 561 562 va_start(ap, format); 563 564 ret = vsnprintf(s, n, format, ap); 565 if (ret < 0) 566 ret = -1; 567 568 va_end(ap); 569 570 return ret; 571 } 572 #define XSNPRINTF _xsnprintf_ 573 #else 574 #define XSNPRINTF snprintf 575 #endif 493 576 #endif 494 577 #else … … 566 649 #endif /* OPENSSL_EXTRA */ 567 650 568 #ifndef CTYPE_USER 569 #include <ctype.h> 570 #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ 571 defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) 651 #ifndef CTYPE_USER 652 #ifndef WOLFSSL_LINUXKM 653 #include <ctype.h> 654 #endif 655 #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ 656 defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) || \ 657 defined(OPENSSL_EXTRA) 572 658 #define XTOUPPER(c) toupper((c)) 573 #define XISALPHA(c) isalpha((c)) 659 #endif 660 #ifdef OPENSSL_ALL 661 #define XISALNUM(c) isalnum((c)) 574 662 #endif 575 663 /* needed by wolfSSL_check_domain_name() */ … … 672 760 DYNAMIC_TYPE_CURVE448 = 91, 673 761 DYNAMIC_TYPE_ED448 = 92, 762 DYNAMIC_TYPE_AES = 93, 763 DYNAMIC_TYPE_CMAC = 94, 674 764 DYNAMIC_TYPE_SNIFFER_SERVER = 1000, 675 765 DYNAMIC_TYPE_SNIFFER_SESSION = 1001, … … 706 796 /* hash types */ 707 797 enum wc_HashType { 708 #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS) 798 #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS) && \ 799 (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION <= 2)) 709 800 /* In selftest build, WC_* types are not mapped to WC_HASH_TYPE types. 710 801 * Values here are based on old selftest hmac.h enum, with additions. … … 780 871 WC_PK_TYPE_RSA_KEYGEN = 8, 781 872 WC_PK_TYPE_EC_KEYGEN = 9, 782 783 WC_PK_TYPE_MAX = WC_PK_TYPE_EC_KEYGEN 873 WC_PK_TYPE_RSA_CHECK_PRIV_KEY = 10, 874 WC_PK_TYPE_EC_CHECK_PRIV_KEY = 11, 875 876 WC_PK_TYPE_MAX = WC_PK_TYPE_EC_CHECK_PRIV_KEY 784 877 }; 785 878
Note:
See TracChangeset
for help on using the changeset viewer.