@@ -5060,11 +5060,16 @@ static void AesSetKey_C(Aes* aes, const byte* key, word32 keySz, int dir)
50605060 }
50615061#endif
50625062#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
5063- ret = wc_Microchip_aes_set_key(aes, userKey, keylen, iv, dir);
5064- if (ret == 0) {
5063+ if (keylen == TA_KEY_TYPE_AES128_SIZE) {
5064+ ret = wc_Microchip_aes_set_key(aes, userKey, keylen, iv, dir);
5065+ if (ret != 0) {
5066+ return ret;
5067+ }
50655068 ret = wc_AesSetIV(aes, iv);
5069+ if (ret != 0) {
5070+ return ret;
5071+ }
50665072 }
5067- return ret;
50685073#endif
50695074 XMEMCPY(aes->key, userKey, keylen);
50705075
@@ -9833,11 +9838,20 @@ int wc_AesGcmEncrypt(Aes* aes, byte* out, const byte* in, word32 sz,
98339838 authIn, authInSz);
98349839#endif
98359840#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
9836- return wc_Microchip_AesGcmEncrypt(
9837- aes, out, in, sz,
9838- iv, ivSz,
9839- authTag, authTagSz,
9840- authIn, authInSz);
9841+ #ifndef TA_AES_GCM_MAX_DATA_SIZE
9842+ #define TA_AES_GCM_MAX_DATA_SIZE 996u
9843+ #endif
9844+ if (aes != NULL &&
9845+ aes->keylen == TA_KEY_TYPE_AES128_SIZE &&
9846+ ivSz == TA_AES_GCM_IV_LENGTH &&
9847+ authTagSz == TA_AES_GCM_TAG_LENGTH &&
9848+ (authInSz + sz) <= TA_AES_GCM_MAX_DATA_SIZE) {
9849+ return wc_Microchip_AesGcmEncrypt(
9850+ aes, out, in, sz,
9851+ iv, ivSz,
9852+ authTag, authTagSz,
9853+ authIn, authInSz);
9854+ }
98419855#endif
98429856#ifdef STM32_CRYPTO_AES_GCM
98439857 return wc_AesGcmEncrypt_STM32(
@@ -10563,9 +10577,18 @@ int wc_AesGcmDecrypt(Aes* aes, byte* out, const byte* in, word32 sz,
1056310577
1056410578#endif
1056510579#if defined(WOLFSSL_MICROCHIP_TA100) && defined(WOLFSSL_MICROCHIP_AESGCM)
10566- return wc_Microchip_AesGcmDecrypt(
10567- aes, out, in, sz, iv, ivSz,
10568- authTag, authTagSz, authIn, authInSz);
10580+ #ifndef TA_AES_GCM_MAX_DATA_SIZE
10581+ #define TA_AES_GCM_MAX_DATA_SIZE 996u
10582+ #endif
10583+ if (aes != NULL &&
10584+ aes->keylen == TA_KEY_TYPE_AES128_SIZE &&
10585+ ivSz == TA_AES_GCM_IV_LENGTH &&
10586+ authTagSz == TA_AES_GCM_TAG_LENGTH &&
10587+ (authInSz + sz) <= TA_AES_GCM_MAX_DATA_SIZE) {
10588+ return wc_Microchip_AesGcmDecrypt(
10589+ aes, out, in, sz, iv, ivSz,
10590+ authTag, authTagSz, authIn, authInSz);
10591+ }
1056910592#endif
1057010593
1057110594#ifdef STM32_CRYPTO_AES_GCM
0 commit comments