Add optional parameter validation to the AES module
This adds additional and optional parameter validation to the AES module that
can be used by enabling the MBEDTLS_CHECK_PARAMS config.h option.
diff --git a/include/mbedtls/aes.h b/include/mbedtls/aes.h
index cfb20c4..35c2229 100644
--- a/include/mbedtls/aes.h
+++ b/include/mbedtls/aes.h
@@ -67,6 +67,26 @@
/* MBEDTLS_ERR_AES_HW_ACCEL_FAILED is deprecated and should not be used. */
#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */
+#if defined( MBEDTLS_CHECK_PARAMS )
+#define MBEDTLS_AES_VALIDATE_RET( cond ) do{ if( !(cond) ) { \
+ MBEDTLS_PARAM_FAILED( #cond, \
+ __FILE__, \
+ __LINE__ ); \
+ return MBEDTLS_ERR_AES_BAD_INPUT_DATA;} \
+ } while(0);
+
+#define MBEDTLS_AES_VALIDATE( cond ) do{ if( !(cond) ) { \
+ MBEDTLS_PARAM_FAILED( #cond, \
+ __FILE__, \
+ __LINE__ ); \
+ return; } \
+ } while(0);
+#else
+/* No validation of parameters will be performed */
+#define MBEDTLS_AES_VALIDATE_RET( cond )
+#define MBEDTLS_AES_VALIDATE( cond)
+#endif
+
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
!defined(inline) && !defined(__cplusplus)
#define inline __inline