@@ -8110,6 +8110,26 @@ void wolfSSL_EVP_init(void)
81108110 }
81118111#endif /* !NO_AES || !NO_DES3 */
81128112
8113+ static int IsCipherTypeAEAD (unsigned char cipherType )
8114+ {
8115+ switch (cipherType ) {
8116+ case AES_128_GCM_TYPE :
8117+ case AES_192_GCM_TYPE :
8118+ case AES_256_GCM_TYPE :
8119+ case AES_128_CCM_TYPE :
8120+ case AES_192_CCM_TYPE :
8121+ case AES_256_CCM_TYPE :
8122+ case ARIA_128_GCM_TYPE :
8123+ case ARIA_192_GCM_TYPE :
8124+ case ARIA_256_GCM_TYPE :
8125+ case SM4_GCM_TYPE :
8126+ case SM4_CCM_TYPE :
8127+ return 1 ;
8128+ default :
8129+ return 0 ;
8130+ }
8131+ }
8132+
81138133 /* Return length on ok */
81148134 int wolfSSL_EVP_Cipher (WOLFSSL_EVP_CIPHER_CTX * ctx , byte * dst , byte * src ,
81158135 word32 len )
@@ -8118,34 +8138,21 @@ void wolfSSL_EVP_init(void)
81188138
81198139 WOLFSSL_ENTER ("wolfSSL_EVP_Cipher" );
81208140
8121- if (ctx == NULL || ((src == NULL || dst == NULL ) &&
8122- (TRUE
8123- #ifdef HAVE_AESGCM
8124- && ctx -> cipherType != AES_128_GCM_TYPE &&
8125- ctx -> cipherType != AES_192_GCM_TYPE &&
8126- ctx -> cipherType != AES_256_GCM_TYPE
8127- #endif
8128- #ifdef HAVE_AESCCM
8129- && ctx -> cipherType != AES_128_CCM_TYPE &&
8130- ctx -> cipherType != AES_192_CCM_TYPE &&
8131- ctx -> cipherType != AES_256_CCM_TYPE
8132- #endif
8133- #ifdef HAVE_ARIA
8134- && ctx -> cipherType != ARIA_128_GCM_TYPE &&
8135- ctx -> cipherType != ARIA_192_GCM_TYPE &&
8136- ctx -> cipherType != ARIA_256_GCM_TYPE
8137- #endif
8138- #ifdef WOLFSSL_SM4_GCM
8139- && ctx -> cipherType != SM4_GCM_TYPE
8140- #endif
8141- #ifdef WOLFSSL_SM4_CCM
8142- && ctx -> cipherType != SM4_CCM_TYPE
8143- #endif
8144- ))) {
8141+ if (ctx == NULL ) {
81458142 WOLFSSL_MSG ("Bad argument." );
81468143 return WOLFSSL_FATAL_ERROR ;
81478144 }
81488145
8146+ if (!IsCipherTypeAEAD (ctx -> cipherType )) {
8147+ /* No-op for non-AEAD ciphers */
8148+ if (src == NULL && dst == NULL && len == 0 )
8149+ return 0 ;
8150+ if (src == NULL || dst == NULL ) {
8151+ WOLFSSL_MSG ("Bad argument." );
8152+ return WOLFSSL_FATAL_ERROR ;
8153+ }
8154+ }
8155+
81498156 if (ctx -> cipherType == WOLFSSL_EVP_CIPH_TYPE_INIT ) {
81508157 WOLFSSL_MSG ("Cipher operation not initialized. Call "
81518158 "wolfSSL_EVP_CipherInit." );
0 commit comments