/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (c) 2014, STMicroelectronics International N.V. */ #ifndef XTEST_HELPERS_H #define XTEST_HELPERS_H #include #include #include #include extern unsigned int level; /* Global context to use if any context is needed as input to a function */ extern TEEC_Context xtest_teec_ctx; /* * Initializes the context above, should be called before the ADBG test * cases are run. */ TEEC_Result xtest_teec_ctx_init(void); void xtest_teec_ctx_deinit(void); /* Opens a session */ TEEC_Result xtest_teec_open_session(TEEC_Session *session, const TEEC_UUID *uuid, TEEC_Operation *op, uint32_t *ret_orig); TEEC_Result xtest_teec_open_static_session(TEEC_Session *session, TEEC_Operation *op, uint32_t *ret_orig); #define TEEC_OPERATION_INITIALIZER { } /* IO access macro */ #define IO(addr) (*((volatile unsigned long *)(addr))) #define UNUSED(x) (void)(x) /* * Helpers for commands towards the crypt TA */ TEEC_Result ta_crypt_cmd_allocate_operation(ADBG_Case_t *c, TEEC_Session *s, TEE_OperationHandle *oph, uint32_t algo, uint32_t mode, uint32_t max_key_size); TEEC_Result ta_crypt_cmd_allocate_transient_object(ADBG_Case_t *c, TEEC_Session *s, TEE_ObjectType obj_type, uint32_t max_obj_size, TEE_ObjectHandle *o); TEEC_Result ta_crypt_cmd_populate_transient_object(ADBG_Case_t *c, TEEC_Session *s, TEE_ObjectHandle o, const TEE_Attribute *attrs, uint32_t attr_count); TEE_Result ta_crypt_cmd_set_operation_key(ADBG_Case_t *c, TEEC_Session *s, TEE_OperationHandle oph, TEE_ObjectHandle key); TEEC_Result ta_crypt_cmd_free_transient_object(ADBG_Case_t *c, TEEC_Session *s, TEE_ObjectHandle o); TEEC_Result ta_crypt_cmd_derive_key(ADBG_Case_t *c, TEEC_Session *s, TEE_OperationHandle oph, TEE_ObjectHandle o, const TEE_Attribute *params, uint32_t paramCount); TEEC_Result ta_crypt_cmd_get_object_buffer_attribute(ADBG_Case_t *c, TEEC_Session *s, TEE_ObjectHandle o, uint32_t attr_id, void *buf, size_t *blen); TEEC_Result ta_crypt_cmd_free_operation(ADBG_Case_t *c, TEEC_Session *s, TEE_OperationHandle oph); bool ta_crypt_cmd_is_algo_supported(ADBG_Case_t *c, TEEC_Session *s, uint32_t alg, uint32_t element); TEEC_Result ta_os_test_cmd_client_identity(TEEC_Session *session, uint32_t *login, TEEC_UUID *client_uuid); void xtest_add_attr(size_t *attr_count, TEE_Attribute *attrs, uint32_t attr_id, const void *buf, size_t len); void xtest_add_attr_value(size_t *attr_count, TEE_Attribute *attrs, uint32_t attr_id, uint32_t value_a, uint32_t value_b); TEE_Result pack_attrs(const TEE_Attribute *attrs, uint32_t attr_count, uint8_t **buf, size_t *blen); void xtest_mutex_init(pthread_mutex_t *mutex); void xtest_mutex_destroy(pthread_mutex_t *mutex); void xtest_mutex_lock(pthread_mutex_t *mutex); void xtest_mutex_unlock(pthread_mutex_t *mutex); void xtest_barrier_init(pthread_barrier_t *barrier, unsigned count); void xtest_barrier_destroy(pthread_barrier_t *barrier); int xtest_barrier_wait(pthread_barrier_t *barrier); #endif /*XTEST_HELPERS_H*/