1*512cbf1dSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */ 2*512cbf1dSJens Wiklander /* 3*512cbf1dSJens Wiklander * Copyright (c) 2017-2020, Linaro Limited 4*512cbf1dSJens Wiklander */ 5*512cbf1dSJens Wiklander 6*512cbf1dSJens Wiklander #ifndef PKCS11_TA_PROCESSING_H 7*512cbf1dSJens Wiklander #define PKCS11_TA_PROCESSING_H 8*512cbf1dSJens Wiklander 9*512cbf1dSJens Wiklander #include <pkcs11_attributes.h> 10*512cbf1dSJens Wiklander #include <tee_internal_api.h> 11*512cbf1dSJens Wiklander 12*512cbf1dSJens Wiklander struct pkcs11_client; 13*512cbf1dSJens Wiklander struct pkcs11_session; 14*512cbf1dSJens Wiklander struct pkcs11_object; 15*512cbf1dSJens Wiklander struct active_processing; 16*512cbf1dSJens Wiklander 17*512cbf1dSJens Wiklander /* 18*512cbf1dSJens Wiklander * Entry points from PKCS11 TA invocation commands 19*512cbf1dSJens Wiklander */ 20*512cbf1dSJens Wiklander 21*512cbf1dSJens Wiklander enum pkcs11_rc entry_processing_init(struct pkcs11_client *client, 22*512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params, 23*512cbf1dSJens Wiklander enum processing_func function); 24*512cbf1dSJens Wiklander 25*512cbf1dSJens Wiklander enum pkcs11_rc entry_processing_step(struct pkcs11_client *client, 26*512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params, 27*512cbf1dSJens Wiklander enum processing_func function, 28*512cbf1dSJens Wiklander enum processing_step step); 29*512cbf1dSJens Wiklander 30*512cbf1dSJens Wiklander /* verify_oneshot is specific since it get 2 input data buffers */ 31*512cbf1dSJens Wiklander enum pkcs11_rc entry_verify_oneshot(struct pkcs11_client *client, 32*512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params, 33*512cbf1dSJens Wiklander enum processing_func function, 34*512cbf1dSJens Wiklander enum processing_step step); 35*512cbf1dSJens Wiklander 36*512cbf1dSJens Wiklander /* 37*512cbf1dSJens Wiklander * Util 38*512cbf1dSJens Wiklander */ 39*512cbf1dSJens Wiklander size_t get_object_key_bit_size(struct pkcs11_object *obj); 40*512cbf1dSJens Wiklander 41*512cbf1dSJens Wiklander void release_active_processing(struct pkcs11_session *session); 42*512cbf1dSJens Wiklander 43*512cbf1dSJens Wiklander /* 44*512cbf1dSJens Wiklander * Symmetric crypto algorithm specific functions 45*512cbf1dSJens Wiklander */ 46*512cbf1dSJens Wiklander bool processing_is_tee_symm(uint32_t proc_id); 47*512cbf1dSJens Wiklander 48*512cbf1dSJens Wiklander enum pkcs11_rc init_symm_operation(struct pkcs11_session *session, 49*512cbf1dSJens Wiklander enum processing_func function, 50*512cbf1dSJens Wiklander struct pkcs11_attribute_head *proc_params, 51*512cbf1dSJens Wiklander struct pkcs11_object *key); 52*512cbf1dSJens Wiklander 53*512cbf1dSJens Wiklander enum pkcs11_rc step_symm_operation(struct pkcs11_session *session, 54*512cbf1dSJens Wiklander enum processing_func function, 55*512cbf1dSJens Wiklander enum processing_step step, 56*512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params); 57*512cbf1dSJens Wiklander 58*512cbf1dSJens Wiklander void tee_release_ctr_operation(struct active_processing *processing); 59*512cbf1dSJens Wiklander enum pkcs11_rc tee_init_ctr_operation(struct active_processing *processing, 60*512cbf1dSJens Wiklander void *proc_params, size_t params_size); 61*512cbf1dSJens Wiklander #endif /*PKCS11_TA_PROCESSING_H*/ 62