/*
 * Copyright (c) 2018-2022, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 *
 */

/***********{{utilities.donotedit_warning}}***********/

#ifndef __TFM_VENEERS_H__
#define __TFM_VENEERS_H__

#include "tfm_api.h"

#ifdef __cplusplus
extern "C" {
#endif

{% for partition in partitions %}
/******** {{partition.manifest.name}} ********/
    {% for function in partition.manifest.secure_functions%}
        {% if function.signal.lower().startswith('tfm_') %}
        {# If signal already contains tfm_ prefix, avoid adding a duplicated one
           in veneer function name.
        #}
psa_status_t {{function.signal.lower()}}_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
        {% else %}
psa_status_t tfm_{{function.signal.lower()}}_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len);
        {% endif %}
    {% endfor %}

{% endfor %}
#ifdef __cplusplus
}
#endif

#endif /* __TFM_VENEERS_H__ */
