@@ -5207,11 +5207,16 @@ static void AesSetKey_C(Aes* aes, const byte* key, word32 keySz, int dir)
52075207 }
52085208#endif
52095209#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
5210- ret = wc_Microchip_aes_set_key(aes, userKey, keylen, iv, dir);
5211- if (ret == 0) {
5210+ if (keylen == TA_KEY_TYPE_AES128_SIZE) {
5211+ ret = wc_Microchip_aes_set_key(aes, userKey, keylen, iv, dir);
5212+ if (ret != 0) {
5213+ return ret;
5214+ }
52125215 ret = wc_AesSetIV(aes, iv);
5216+ if (ret != 0) {
5217+ return ret;
5218+ }
52135219 }
5214- return ret;
52155220#endif
52165221 XMEMCPY(aes->key, userKey, keylen);
52175222
@@ -10043,11 +10048,20 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
1004310048 authIn, authInSz);
1004410049#endif
1004510050#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
10046- return wc_Microchip_AesGcmEncrypt(
10047- aes, out, in, sz,
10048- iv, ivSz,
10049- authTag, authTagSz,
10050- authIn, authInSz);
10051+ #ifndef TA_AES_GCM_MAX_DATA_SIZE
10052+ #define TA_AES_GCM_MAX_DATA_SIZE 996u
10053+ #endif
10054+ if (aes != NULL &&
10055+ aes->keylen == TA_KEY_TYPE_AES128_SIZE &&
10056+ ivSz == TA_AES_GCM_IV_LENGTH &&
10057+ authTagSz == TA_AES_GCM_TAG_LENGTH &&
10058+ (authInSz + sz) <= TA_AES_GCM_MAX_DATA_SIZE) {
10059+ return wc_Microchip_AesGcmEncrypt(
10060+ aes, out, in, sz,
10061+ iv, ivSz,
10062+ authTag, authTagSz,
10063+ authIn, authInSz);
10064+ }
1005110065#endif
1005210066#ifdef STM32_CRYPTO_AES_GCM
1005310067 return wc_AesGcmEncrypt_STM32(
@@ -10774,9 +10788,18 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
1077410788
1077510789#endif
1077610790#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
10777- return wc_Microchip_AesGcmDecrypt(
10778- aes, out, in, sz, iv, ivSz,
10779- authTag, authTagSz, authIn, authInSz);
10791+ #ifndef TA_AES_GCM_MAX_DATA_SIZE
10792+ #define TA_AES_GCM_MAX_DATA_SIZE 996u
10793+ #endif
10794+ if (aes != NULL &&
10795+ aes->keylen == TA_KEY_TYPE_AES128_SIZE &&
10796+ ivSz == TA_AES_GCM_IV_LENGTH &&
10797+ authTagSz == TA_AES_GCM_TAG_LENGTH &&
10798+ (authInSz + sz) <= TA_AES_GCM_MAX_DATA_SIZE) {
10799+ return wc_Microchip_AesGcmDecrypt(
10800+ aes, out, in, sz, iv, ivSz,
10801+ authTag, authTagSz, authIn, authInSz);
10802+ }
1078010803#endif
1078110804
1078210805#ifdef STM32_CRYPTO_AES_GCM
0 commit comments