Ignore:
Timestamp:
Jun 22, 2021, 9:00:19 PM (3 years ago)
Author:
coas-nagasima
Message:

WolfSSLとAzure IoT SDKを更新

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  
    2323    \file wolfssl/wolfcrypt/types.h
    2424*/
    25 
     25/*
     26DESCRIPTION
     27This library defines the primitive data types and abstraction macros to
     28decouple library dependencies with standard string, memory and so on.
     29
     30*/
    2631#ifndef WOLF_CRYPT_TYPES_H
    2732#define WOLF_CRYPT_TYPES_H
     
    6065        #ifndef byte
    6166            typedef unsigned char  byte;
     67            typedef   signed char  sword8;
     68            typedef unsigned char  word8;
    6269        #endif
    6370        #ifdef WC_16BIT_CPU
     71            typedef          int   sword16;
    6472            typedef unsigned int   word16;
     73            typedef          long  sword32;
    6574            typedef unsigned long  word32;
    6675        #else
     76            typedef          short sword16;
    6777            typedef unsigned short word16;
     78            typedef          int   sword32;
    6879            typedef unsigned int   word32;
    6980        #endif
     
    110121        #define WORD64_AVAILABLE
    111122        #define W64LIT(x) x##ui64
     123        typedef          __int64 sword64;
    112124        typedef unsigned __int64 word64;
    113125    #elif defined(__EMSCRIPTEN__)
    114126        #define WORD64_AVAILABLE
    115127        #define W64LIT(x) x##ull
     128        typedef          long long sword64;
    116129        typedef unsigned long long word64;
    117130    #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8
    118131        #define WORD64_AVAILABLE
    119132        #define W64LIT(x) x##LL
     133        typedef          long sword64;
    120134        typedef unsigned long word64;
    121135    #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8
    122136        #define WORD64_AVAILABLE
    123137        #define W64LIT(x) x##LL
     138        typedef          long long sword64;
    124139        typedef unsigned long long word64;
    125140    #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8
    126141        #define WORD64_AVAILABLE
    127142        #define W64LIT(x) x##LL
     143        typedef          long long sword64;
    128144        typedef unsigned long long word64;
    129145    #endif
     
    150166            #define WOLFCRYPT_SLOW_WORD64
    151167        #endif
     168        #define WC_32BIT_CPU
    152169    #endif
    153170
     
    163180        #define MP_16BIT  /* for mp_int, mp_word needs to be twice as big as
    164181                             mp_digit, no 64 bit type so make mp_digit 16 bit */
     182        #define WC_32BIT_CPU
    165183#endif
    166184
     
    198216        #endif
    199217    #else
    200         #define WC_INLINE
     218        #ifdef __GNUC__
     219            #define WC_INLINE __attribute__((unused))
     220        #else
     221            #define WC_INLINE
     222        #endif
    201223    #endif
    202224    #endif
     
    245267        #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1)))
    246268            #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
    248274        #endif
    249275    #endif
     
    343369        /* just use plain C stdlib stuff if desired */
    344370        #include <stdlib.h>
    345         #define XMALLOC(s, h, t)     malloc((s))
     371        #define XMALLOC(s, h, t)     malloc((size_t)(s))
    346372        #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
    349382    #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \
    350383            && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \
     
    376409    #endif
    377410
    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
    380414        #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)
    390416        #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
    391417            VAR_TYPE* VAR_NAME[VAR_ITEMS]; \
    392             int idx##VAR_NAME; \
     418            int idx##VAR_NAME, inner_idx_##VAR_NAME; \
    393419            for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
    394420                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                } \
    395431            }
    396432        #define FREE_VAR(VAR_NAME, HEAP) \
     
    407443            FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP)
    408444    #else
     445        #undef DECLARE_VAR_IS_HEAP_ALLOC
    409446        #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \
    410447            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
    413448        #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
    414449            VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE]
     
    418453        #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
    419454            VAR_TYPE* VAR_NAME[VAR_ITEMS]; \
    420             int idx##VAR_NAME;
     455            int idx##VAR_NAME, inner_idx_##VAR_NAME;
    421456        #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \
    422457            for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \
    423458                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                } \
    424469            }
    425470        #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \
     
    438483    #endif
    439484
    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))
    446496
    447497        #define XSTRLEN(s1)       strlen((s1))
    448498        #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,
    450500         * not required for wolfCrypt only */
    451501        #define XSTRSTR(s1,s2)    strstr((s1),(s2))
    452502        #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n))
    453503        #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n))
     504        #define XSTRCMP(s1,s2)    strcmp((s1),(s2))
    454505        #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n))
    455506
     
    474525            #if defined(WOLFSSL_DEOS)
    475526                #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))
    476529            #else
    477530                #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n))
     
    490543                #include <stdio.h>
    491544            #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
    493576            #endif
    494577        #else
     
    566649    #endif /* OPENSSL_EXTRA */
    567650
    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)
    572658            #define XTOUPPER(c)     toupper((c))
    573             #define XISALPHA(c)     isalpha((c))
     659        #endif
     660        #ifdef OPENSSL_ALL
     661        #define XISALNUM(c)     isalnum((c))
    574662        #endif
    575663        /* needed by wolfSSL_check_domain_name() */
     
    672760        DYNAMIC_TYPE_CURVE448     = 91,
    673761        DYNAMIC_TYPE_ED448        = 92,
     762        DYNAMIC_TYPE_AES          = 93,
     763        DYNAMIC_TYPE_CMAC         = 94,
    674764        DYNAMIC_TYPE_SNIFFER_SERVER     = 1000,
    675765        DYNAMIC_TYPE_SNIFFER_SESSION    = 1001,
     
    706796    /* hash types */
    707797    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))
    709800        /* In selftest build, WC_* types are not mapped to WC_HASH_TYPE types.
    710801         * Values here are based on old selftest hmac.h enum, with additions.
     
    780871        WC_PK_TYPE_RSA_KEYGEN = 8,
    781872        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
    784877    };
    785878
Note: See TracChangeset for help on using the changeset viewer.