Initial prototype and demonstrator for parameter validation

Adds a new configurable option for the parameter validation level.
This commit is contained in:
Simon Butcher
2018-05-14 13:58:22 +01:00
parent cdd97fd632
commit 1a925bc0aa
5 changed files with 61 additions and 8 deletions

View File

@@ -56,6 +56,17 @@
/* Error codes in range 0x0023-0x0025 */
#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */
#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */
#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0027 /**< Invalid
input data. */
#if defined( MBEDTLS_CHECK_PARAMS )
#define MBEDTLS_AES_VALIDATE( cond ) do{ if( !(cond) ) \
return MBEDTLS_ERR_AES_BAD_INPUT_DATA; \
} while(0);
#else
/* No validation of parameters will be performed */
#define MBEDTLS_AES_VALIDATE( cond)
#endif
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
!defined(inline) && !defined(__cplusplus)

View File

@@ -221,6 +221,25 @@
*/
//#define MBEDTLS_DEPRECATED_REMOVED
/**
* \def MBEDTLS_PARAM_VALIDATION_LEVEL
*
* The defined parameter validation level for the library. This configuration
* controls whether the library validates parameters passed to it.
*
* Application code that deals with 3rd party input may wish to enable such
* validation, whilst code on closed systems, such as embedded systems, where
* the input is controlled and predictable, may wish to disable it entirely to
* reduce the code size of the library.
*
* When the symbol is not defined, no parameter validation except that required
* to ensure the integrity or security of the library are performed.
*
* When the symbol is defined, all parameters will be validated, and an error
* code returned where appropriate.
*/
#define MBEDTLS_CHECK_PARAMS
/* \} name SECTION: System support */
/**