1*62c56f98SSadaf Ebrahimi /** 2*62c56f98SSadaf Ebrahimi * \file psa_crypto_invasive.h 3*62c56f98SSadaf Ebrahimi * 4*62c56f98SSadaf Ebrahimi * \brief PSA cryptography module: invasive interfaces for test only. 5*62c56f98SSadaf Ebrahimi * 6*62c56f98SSadaf Ebrahimi * The interfaces in this file are intended for testing purposes only. 7*62c56f98SSadaf Ebrahimi * They MUST NOT be made available to clients over IPC in integrations 8*62c56f98SSadaf Ebrahimi * with isolation, and they SHOULD NOT be made available in library 9*62c56f98SSadaf Ebrahimi * integrations except when building the library for testing. 10*62c56f98SSadaf Ebrahimi */ 11*62c56f98SSadaf Ebrahimi /* 12*62c56f98SSadaf Ebrahimi * Copyright The Mbed TLS Contributors 13*62c56f98SSadaf Ebrahimi * SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 14*62c56f98SSadaf Ebrahimi */ 15*62c56f98SSadaf Ebrahimi 16*62c56f98SSadaf Ebrahimi #ifndef PSA_CRYPTO_INVASIVE_H 17*62c56f98SSadaf Ebrahimi #define PSA_CRYPTO_INVASIVE_H 18*62c56f98SSadaf Ebrahimi 19*62c56f98SSadaf Ebrahimi #include "mbedtls/build_info.h" 20*62c56f98SSadaf Ebrahimi 21*62c56f98SSadaf Ebrahimi #include "psa/crypto.h" 22*62c56f98SSadaf Ebrahimi #include "common.h" 23*62c56f98SSadaf Ebrahimi 24*62c56f98SSadaf Ebrahimi #include "mbedtls/entropy.h" 25*62c56f98SSadaf Ebrahimi 26*62c56f98SSadaf Ebrahimi #if !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) 27*62c56f98SSadaf Ebrahimi /** \brief Configure entropy sources. 28*62c56f98SSadaf Ebrahimi * 29*62c56f98SSadaf Ebrahimi * This function may only be called before a call to psa_crypto_init(), 30*62c56f98SSadaf Ebrahimi * or after a call to mbedtls_psa_crypto_free() and before any 31*62c56f98SSadaf Ebrahimi * subsequent call to psa_crypto_init(). 32*62c56f98SSadaf Ebrahimi * 33*62c56f98SSadaf Ebrahimi * This function is only intended for test purposes. The functionality 34*62c56f98SSadaf Ebrahimi * it provides is also useful for system integrators, but 35*62c56f98SSadaf Ebrahimi * system integrators should configure entropy drivers instead of 36*62c56f98SSadaf Ebrahimi * breaking through to the Mbed TLS API. 37*62c56f98SSadaf Ebrahimi * 38*62c56f98SSadaf Ebrahimi * \param entropy_init Function to initialize the entropy context 39*62c56f98SSadaf Ebrahimi * and set up the desired entropy sources. 40*62c56f98SSadaf Ebrahimi * It is called by psa_crypto_init(). 41*62c56f98SSadaf Ebrahimi * By default this is mbedtls_entropy_init(). 42*62c56f98SSadaf Ebrahimi * This function cannot report failures directly. 43*62c56f98SSadaf Ebrahimi * To indicate a failure, set the entropy context 44*62c56f98SSadaf Ebrahimi * to a state where mbedtls_entropy_func() will 45*62c56f98SSadaf Ebrahimi * return an error. 46*62c56f98SSadaf Ebrahimi * \param entropy_free Function to free the entropy context 47*62c56f98SSadaf Ebrahimi * and associated resources. 48*62c56f98SSadaf Ebrahimi * It is called by mbedtls_psa_crypto_free(). 49*62c56f98SSadaf Ebrahimi * By default this is mbedtls_entropy_free(). 50*62c56f98SSadaf Ebrahimi * 51*62c56f98SSadaf Ebrahimi * \retval #PSA_SUCCESS 52*62c56f98SSadaf Ebrahimi * Success. 53*62c56f98SSadaf Ebrahimi * \retval #PSA_ERROR_NOT_PERMITTED 54*62c56f98SSadaf Ebrahimi * The caller does not have the permission to configure 55*62c56f98SSadaf Ebrahimi * entropy sources. 56*62c56f98SSadaf Ebrahimi * \retval #PSA_ERROR_BAD_STATE 57*62c56f98SSadaf Ebrahimi * The library has already been initialized. 58*62c56f98SSadaf Ebrahimi */ 59*62c56f98SSadaf Ebrahimi psa_status_t mbedtls_psa_crypto_configure_entropy_sources( 60*62c56f98SSadaf Ebrahimi void (* entropy_init)(mbedtls_entropy_context *ctx), 61*62c56f98SSadaf Ebrahimi void (* entropy_free)(mbedtls_entropy_context *ctx)); 62*62c56f98SSadaf Ebrahimi #endif /* !defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) */ 63*62c56f98SSadaf Ebrahimi 64*62c56f98SSadaf Ebrahimi #if defined(MBEDTLS_TEST_HOOKS) && defined(MBEDTLS_PSA_CRYPTO_C) 65*62c56f98SSadaf Ebrahimi psa_status_t psa_mac_key_can_do( 66*62c56f98SSadaf Ebrahimi psa_algorithm_t algorithm, 67*62c56f98SSadaf Ebrahimi psa_key_type_t key_type); 68*62c56f98SSadaf Ebrahimi #endif /* MBEDTLS_TEST_HOOKS && MBEDTLS_PSA_CRYPTO_C */ 69*62c56f98SSadaf Ebrahimi 70*62c56f98SSadaf Ebrahimi #endif /* PSA_CRYPTO_INVASIVE_H */ 71