From a3fdfb4925a4506f2ee5e00135d4994dd3708c59 Mon Sep 17 00:00:00 2001 From: Neil Armstrong Date: Mon, 21 Feb 2022 10:39:57 +0100 Subject: [PATCH] Introduce new PSA to mbedtls PK error mapping function Signed-off-by: Neil Armstrong --- include/mbedtls/pk.h | 4 ++++ library/pk.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/include/mbedtls/pk.h b/include/mbedtls/pk.h index 9ad7a1df6d..b496cb79b2 100644 --- a/include/mbedtls/pk.h +++ b/include/mbedtls/pk.h @@ -84,6 +84,10 @@ extern "C" { #endif +#if defined(MBEDTLS_USE_PSA_CRYPTO) +int mbedtls_pk_psa_err_translate( psa_status_t status ); +#endif + /** * \brief Public key types */ diff --git a/library/pk.c b/library/pk.c index 45d1a9de78..7c5c40bbd4 100644 --- a/library/pk.c +++ b/library/pk.c @@ -147,6 +147,40 @@ int mbedtls_pk_setup( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ) } #if defined(MBEDTLS_USE_PSA_CRYPTO) +int mbedtls_pk_psa_err_translate( psa_status_t status ) +{ + switch( status ) + { + case PSA_SUCCESS: + return( 0 ); + case PSA_ERROR_INVALID_HANDLE: + return( MBEDTLS_ERR_PK_KEY_INVALID_FORMAT ); + case PSA_ERROR_NOT_PERMITTED: + return( MBEDTLS_ERR_ERROR_GENERIC_ERROR ); + case PSA_ERROR_BUFFER_TOO_SMALL: + return( MBEDTLS_ERR_PK_BUFFER_TOO_SMALL ); + case PSA_ERROR_NOT_SUPPORTED: + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + case PSA_ERROR_INVALID_ARGUMENT: + return( MBEDTLS_ERR_PK_INVALID_ALG ); + case PSA_ERROR_INSUFFICIENT_MEMORY: + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + case PSA_ERROR_BAD_STATE: + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + case PSA_ERROR_COMMUNICATION_FAILURE: + case PSA_ERROR_HARDWARE_FAILURE: + return( MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED ); + case PSA_ERROR_DATA_CORRUPT: + case PSA_ERROR_DATA_INVALID: + case PSA_ERROR_STORAGE_FAILURE: + return( MBEDTLS_ERR_PK_FILE_IO_ERROR ); + case PSA_ERROR_CORRUPTION_DETECTED: + return( MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED ); + default: + return( MBEDTLS_ERR_ERROR_GENERIC_ERROR ); + } +} + /* * Initialise a PSA-wrapping context */