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/wolfcrypt/src/sha512.c

    r457 r464  
    2727#include <wolfssl/wolfcrypt/settings.h>
    2828
    29 #if (defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)) && !defined(WOLFSSL_ARMASM)
     29#if (defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)) && !defined(WOLFSSL_ARMASM) && !defined(WOLFSSL_PSOC6_CRYPTO)
    3030
    3131#if defined(HAVE_FIPS) && \
     
    188188#if defined(WOLFSSL_IMX6_CAAM) && !defined(NO_IMX6_CAAM_HASH)
    189189    /* functions defined in wolfcrypt/src/port/caam/caam_sha.c */
     190
     191#elif defined(WOLFSSL_SILABS_SHA384)
     192    /* functions defined in wolfcrypt/src/port/silabs/silabs_hash.c */
    190193
    191194#else
     
    338341    static int transform_check = 0;
    339342    static int intel_flags;
    340     #define Transform_Sha512(sha512)     (*Transform_Sha512_p)(sha512)
    341     #define Transform_Sha512_Len(sha512, len) \
    342                                           (*Transform_Sha512_Len_p)(sha512, len)
    343 
    344     static void Sha512_SetTransform()
     343    static int Transform_Sha512_is_vectorized = 0;
     344
     345    static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
     346        int ret;
     347        if (Transform_Sha512_is_vectorized)
     348            SAVE_VECTOR_REGISTERS();
     349        ret = (*Transform_Sha512_p)(sha512);
     350        if (Transform_Sha512_is_vectorized)
     351            RESTORE_VECTOR_REGISTERS();
     352        return ret;
     353    }
     354    static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
     355        int ret;
     356        if (Transform_Sha512_is_vectorized)
     357            SAVE_VECTOR_REGISTERS();
     358        ret = (*Transform_Sha512_Len_p)(sha512, len);
     359        if (Transform_Sha512_is_vectorized)
     360            RESTORE_VECTOR_REGISTERS();
     361        return ret;
     362    }
     363
     364    static void Sha512_SetTransform(void)
    345365    {
    346366        if (transform_check)
     
    355375                Transform_Sha512_p = Transform_Sha512_AVX2_RORX;
    356376                Transform_Sha512_Len_p = Transform_Sha512_AVX2_RORX_Len;
     377                Transform_Sha512_is_vectorized = 1;
    357378            }
    358379            else
     
    361382                Transform_Sha512_p = Transform_Sha512_AVX2;
    362383                Transform_Sha512_Len_p = Transform_Sha512_AVX2_Len;
     384                Transform_Sha512_is_vectorized = 1;
    363385            }
    364386        #ifdef HAVE_INTEL_RORX
     
    366388                Transform_Sha512_p = Transform_Sha512_AVX1_RORX;
    367389                Transform_Sha512_Len_p = Transform_Sha512_AVX1_RORX_Len;
     390                Transform_Sha512_is_vectorized = 1;
    368391            }
    369392        #endif
     
    375398            Transform_Sha512_p = Transform_Sha512_AVX1;
    376399            Transform_Sha512_Len_p = Transform_Sha512_AVX1_Len;
     400            Transform_Sha512_is_vectorized = 1;
    377401        }
    378402        else
    379403    #endif
     404        {
    380405            Transform_Sha512_p = _Transform_Sha512;
     406            Transform_Sha512_is_vectorized = 1;
     407        }
    381408
    382409        transform_check = 1;
     
    399426
    400427    sha512->heap = heap;
     428#ifdef WOLFSSL_SMALL_STACK_CACHE
     429    sha512->W = NULL;
     430#endif
    401431
    402432    ret = InitSha512(sha512);
     
    406436#if defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)
    407437    Sha512_SetTransform();
    408 #endif
    409 
    410 #ifdef WOLFSSL_SMALL_STACK_CACHE
    411     sha512->W = NULL;
    412438#endif
    413439
     
    508534    word64* W = sha512->W;
    509535    if (W == NULL) {
    510         W = (word64*) XMALLOC(sizeof(word64) * 16, NULL,
    511                                                        DYNAMIC_TYPE_TMP_BUFFER);
     536        W = (word64*)XMALLOC(sizeof(word64) * 16, NULL,DYNAMIC_TYPE_TMP_BUFFER);
    512537        if (W == NULL)
    513538            return MEMORY_E;
     
    693718#endif
    694719
    695     if (len > 0) {
     720    if (ret == 0 && len > 0) {
    696721        XMEMCPY(local, data, len);
    697722        sha512->buffLen = len;
     
    722747#endif /* WOLFSSL_SHA512 */
    723748
    724 #endif /* WOLFSSL_IMX6_CAAM */
     749#endif /* WOLFSSL_IMX6_CAAM || WOLFSSL_SILABS_SHA384 */
    725750
    726751static WC_INLINE int Sha512Final(wc_Sha512* sha512)
     
    903928    /* functions defined in wolfcrypt/src/port/caam/caam_sha.c */
    904929
     930#elif defined(WOLFSSL_SILABS_SHA512)
     931    /* functions defined in wolfcrypt/src/port/silabs/silabs_hash.c */
     932
    905933#else
    906934
     
    10201048
    10211049    sha384->heap = heap;
     1050#ifdef WOLFSSL_SMALL_STACK_CACHE
     1051    sha384->W = NULL;
     1052#endif
     1053
    10221054    ret = InitSha384(sha384);
    10231055    if (ret != 0)
     
    10261058#if defined(HAVE_INTEL_AVX1) || defined(HAVE_INTEL_AVX2)
    10271059    Sha512_SetTransform();
    1028 #endif
    1029 #ifdef WOLFSSL_SMALL_STACK_CACHE
    1030     sha384->W = NULL;
    10311060#endif
    10321061
     
    10411070}
    10421071
    1043 #endif /* WOLFSSL_IMX6_CAAM */
     1072#endif /* WOLFSSL_IMX6_CAAM || WOLFSSL_SILABS_SHA512 */
    10441073
    10451074int wc_InitSha384(wc_Sha384* sha384)
     
    11121141#endif
    11131142
     1143#ifdef WOLFSSL_SILABS_SHA512
     1144    dst->silabsCtx.hash_ctx.cmd_ctx = &(dst->silabsCtx.cmd_ctx);
     1145    dst->silabsCtx.hash_ctx.hash_type_ctx = &(dst->silabsCtx.hash_type_ctx);
     1146#endif
     1147
    11141148#ifdef WOLFSSL_ASYNC_CRYPT
    11151149    ret = wolfAsync_DevCopy(&src->asyncDev, &dst->asyncDev);
     
    11881222#endif
    11891223
     1224#ifdef WOLFSSL_SILABS_SHA384
     1225    dst->silabsCtx.hash_ctx.cmd_ctx = &(dst->silabsCtx.cmd_ctx);
     1226    dst->silabsCtx.hash_ctx.hash_type_ctx = &(dst->silabsCtx.hash_type_ctx);
     1227#endif
     1228
    11901229#ifdef WOLFSSL_ASYNC_CRYPT
    11911230    ret = wolfAsync_DevCopy(&src->asyncDev, &dst->asyncDev);
Note: See TracChangeset for help on using the changeset viewer.