e3c05853d6
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
96 lines
3.4 KiB
C
96 lines
3.4 KiB
C
/**
|
|
* \file psa_util_internal.h
|
|
*
|
|
* \brief Internal utility functions for use of PSA Crypto.
|
|
*/
|
|
/*
|
|
* Copyright The Mbed TLS Contributors
|
|
* SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef MBEDTLS_PSA_UTIL_INTERNAL_H
|
|
#define MBEDTLS_PSA_UTIL_INTERNAL_H
|
|
|
|
/* Include the public header so that users only need one include. */
|
|
#include "mbedtls/psa_util.h"
|
|
|
|
#include "psa/crypto.h"
|
|
|
|
#if defined(MBEDTLS_PSA_CRYPTO_C)
|
|
|
|
/*************************************************************************
|
|
* FFDH
|
|
************************************************************************/
|
|
|
|
#define MBEDTLS_PSA_MAX_FFDH_PUBKEY_LENGTH \
|
|
PSA_KEY_EXPORT_FFDH_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_FFDH_MAX_KEY_BITS)
|
|
|
|
/*************************************************************************
|
|
* ECC
|
|
************************************************************************/
|
|
|
|
#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH \
|
|
PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
|
|
|
#define MBEDTLS_PSA_MAX_EC_KEY_PAIR_LENGTH \
|
|
PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS)
|
|
|
|
/*************************************************************************
|
|
* Error translation
|
|
************************************************************************/
|
|
|
|
typedef struct {
|
|
/* Error codes used by PSA crypto are in -255..-128, fitting in 16 bits. */
|
|
int16_t psa_status;
|
|
/* Error codes used by Mbed TLS are in one of the ranges
|
|
* -127..-1 (low-level) or -32767..-4096 (high-level with a low-level
|
|
* code optionally added), fitting in 16 bits. */
|
|
int16_t mbedtls_error;
|
|
} mbedtls_error_pair_t;
|
|
|
|
#if defined(MBEDTLS_MD_LIGHT)
|
|
extern const mbedtls_error_pair_t psa_to_md_errors[4];
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_LMS_C)
|
|
extern const mbedtls_error_pair_t psa_to_lms_errors[3];
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_USE_PSA_CRYPTO) || defined(MBEDTLS_SSL_PROTO_TLS1_3)
|
|
extern const mbedtls_error_pair_t psa_to_ssl_errors[7];
|
|
#endif
|
|
|
|
#if defined(PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY) || \
|
|
defined(PSA_WANT_KEY_TYPE_RSA_KEY_PAIR_BASIC)
|
|
extern const mbedtls_error_pair_t psa_to_pk_rsa_errors[8];
|
|
#endif
|
|
|
|
#if defined(MBEDTLS_USE_PSA_CRYPTO) && \
|
|
defined(PSA_WANT_KEY_TYPE_ECC_PUBLIC_KEY)
|
|
extern const mbedtls_error_pair_t psa_to_pk_ecdsa_errors[7];
|
|
#endif
|
|
|
|
/* Generic fallback function for error translation,
|
|
* when the received state was not module-specific. */
|
|
int psa_generic_status_to_mbedtls(psa_status_t status);
|
|
|
|
/* This function iterates over provided local error translations,
|
|
* and if no match was found - calls the fallback error translation function. */
|
|
int psa_status_to_mbedtls(psa_status_t status,
|
|
const mbedtls_error_pair_t *local_translations,
|
|
size_t local_errors_num,
|
|
int (*fallback_f)(psa_status_t));
|
|
|
|
/* The second out of three-stage error handling functions of the pk module,
|
|
* acts as a fallback after RSA / ECDSA error translation, and if no match
|
|
* is found, it itself calls psa_generic_status_to_mbedtls. */
|
|
int psa_pk_status_to_mbedtls(psa_status_t status);
|
|
|
|
/* Utility macro to shorten the defines of error translator in modules. */
|
|
#define PSA_TO_MBEDTLS_ERR_LIST(status, error_list, fallback_f) \
|
|
psa_status_to_mbedtls(status, error_list, \
|
|
sizeof(error_list)/sizeof(error_list[0]), \
|
|
fallback_f)
|
|
|
|
#endif /* MBEDTLS_PSA_CRYPTO_C */
|
|
#endif /* MBEDTLS_PSA_UTIL_INTERNAL_H */
|