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/wc_encrypt.c

    r457 r464  
    2929#include <wolfssl/wolfcrypt/des3.h>
    3030#include <wolfssl/wolfcrypt/hash.h>
     31#include <wolfssl/wolfcrypt/rc2.h>
    3132#include <wolfssl/wolfcrypt/arc4.h>
    3233#include <wolfssl/wolfcrypt/wc_encrypt.h>
     
    239240
    240241
    241 #ifdef WOLFSSL_ENCRYPTED_KEYS
     242#if !defined(NO_ASN) && defined(WOLFSSL_ENCRYPTED_KEYS)
    242243
    243244int wc_BufferKeyDecrypt(EncryptedInfo* info, byte* der, word32 derSz,
     
    361362}
    362363
    363 #endif /* WOLFSSL_ENCRYPTED_KEYS */
     364#endif /* !NO_ASN && WOLFSSL_ENCRYPTED_KEYS */
    364365
    365366
     
    375376                      int length, int version, byte* cbcIv, int enc, int shaOid)
    376377{
    377     int typeH;
     378    int typeH = WC_HASH_TYPE_NONE;
    378379    int derivedLen = 0;
    379380    int ret = 0;
     
    456457            break;
    457458    #endif /* WOLFSSL_AES_128 && !NO_SHA */
     459    #ifdef WC_RC2
     460        case PBE_SHA1_40RC2_CBC:
     461            typeH = WC_SHA;
     462            derivedLen = 5;
     463            break;
     464    #endif
    458465        default:
    459466            WOLFSSL_MSG("Unknown/Unsupported encrypt/decrypt id");
     
    612619        case PBE_AES128_CBC:
    613620        {
    614             Aes aes;
    615             ret = wc_AesInit(&aes, NULL, INVALID_DEVID);
     621#ifdef WOLFSSL_SMALL_STACK
     622            Aes *aes;
     623            aes = (Aes *)XMALLOC(sizeof *aes, NULL, DYNAMIC_TYPE_AES);
     624            if (aes == NULL)
     625                return MEMORY_E;
     626#else
     627            Aes aes[1];
     628#endif
     629            ret = wc_AesInit(aes, NULL, INVALID_DEVID);
    616630            if (ret == 0) {
    617631                if (enc) {
    618                     ret = wc_AesSetKey(&aes, key, derivedLen, cbcIv,
     632                    ret = wc_AesSetKey(aes, key, derivedLen, cbcIv,
    619633                                                                AES_ENCRYPTION);
    620634                }
    621635                else {
    622                     ret = wc_AesSetKey(&aes, key, derivedLen, cbcIv,
     636                    ret = wc_AesSetKey(aes, key, derivedLen, cbcIv,
    623637                                                                AES_DECRYPTION);
    624638                }
     
    626640            if (ret == 0) {
    627641                if (enc)
    628                     ret = wc_AesCbcEncrypt(&aes, input, input, length);
     642                    ret = wc_AesCbcEncrypt(aes, input, input, length);
    629643                else
    630                     ret = wc_AesCbcDecrypt(&aes, input, input, length);
    631             }
     644                    ret = wc_AesCbcDecrypt(aes, input, input, length);
     645            }
     646            ForceZero(aes, sizeof(Aes));
     647#ifdef WOLFSSL_SMALL_STACK
     648            XFREE(aes, NULL, DYNAMIC_TYPE_AES);
     649#endif
    632650            if (ret != 0) {
    633651#ifdef WOLFSSL_SMALL_STACK
     
    636654                return ret;
    637655            }
    638             ForceZero(&aes, sizeof(Aes));
    639656            break;
    640657        }
    641658    #endif /* WOLFSSL_AES_256 */
    642659#endif /* !NO_AES && HAVE_AES_CBC */
     660#ifdef WC_RC2
     661        case PBE_SHA1_40RC2_CBC:
     662        {
     663            Rc2 rc2;
     664            /* effective key size for RC2-40-CBC is 40 bits */
     665            ret = wc_Rc2SetKey(&rc2, key, derivedLen, cbcIv, 40);
     666            if (ret == 0) {
     667                if (enc)
     668                    ret = wc_Rc2CbcEncrypt(&rc2, input, input, length);
     669                else
     670                    ret = wc_Rc2CbcDecrypt(&rc2, input, input, length);
     671            }
     672            if (ret != 0) {
     673#ifdef WOLFSSL_SMALL_STACK
     674                XFREE(key, NULL, DYNAMIC_TYPE_TMP_BUFFER);
     675#endif
     676                return ret;
     677            }
     678            ForceZero(&rc2, sizeof(Rc2));
     679            break;
     680        }
     681#endif
    643682
    644683        default:
Note: See TracChangeset for help on using the changeset viewer.