1512cbf1dSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */ 2512cbf1dSJens Wiklander /* 3512cbf1dSJens Wiklander * Copyright (c) 2017-2020, Linaro Limited 4512cbf1dSJens Wiklander */ 5512cbf1dSJens Wiklander 6512cbf1dSJens Wiklander #ifndef PKCS11_TA_PROCESSING_H 7512cbf1dSJens Wiklander #define PKCS11_TA_PROCESSING_H 8512cbf1dSJens Wiklander 9512cbf1dSJens Wiklander #include <pkcs11_attributes.h> 10512cbf1dSJens Wiklander #include <tee_internal_api.h> 11512cbf1dSJens Wiklander 12512cbf1dSJens Wiklander struct pkcs11_client; 13512cbf1dSJens Wiklander struct pkcs11_session; 14512cbf1dSJens Wiklander struct pkcs11_object; 15512cbf1dSJens Wiklander struct active_processing; 16512cbf1dSJens Wiklander 17512cbf1dSJens Wiklander /* 18512cbf1dSJens Wiklander * Entry points from PKCS11 TA invocation commands 19512cbf1dSJens Wiklander */ 20512cbf1dSJens Wiklander 21fa247a2aSRuchika Gupta enum pkcs11_rc entry_generate_secret(struct pkcs11_client *client, 22fa247a2aSRuchika Gupta uint32_t ptypes, TEE_Param *params); 23fa247a2aSRuchika Gupta 24512cbf1dSJens Wiklander enum pkcs11_rc entry_processing_init(struct pkcs11_client *client, 25512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params, 26512cbf1dSJens Wiklander enum processing_func function); 27512cbf1dSJens Wiklander 28512cbf1dSJens Wiklander enum pkcs11_rc entry_processing_step(struct pkcs11_client *client, 29512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params, 30512cbf1dSJens Wiklander enum processing_func function, 31512cbf1dSJens Wiklander enum processing_step step); 32512cbf1dSJens Wiklander 334dad6642SRuchika Gupta enum pkcs11_rc entry_processing_key(struct pkcs11_client *client, 344dad6642SRuchika Gupta uint32_t ptypes, TEE_Param *params, 354dad6642SRuchika Gupta enum processing_func function); 3648799892SRuchika Gupta 37*eb6141b6SVesa Jääskeläinen enum pkcs11_rc entry_release_active_processing(struct pkcs11_client *client, 38*eb6141b6SVesa Jääskeläinen uint32_t ptypes, 39*eb6141b6SVesa Jääskeläinen TEE_Param *params); 40*eb6141b6SVesa Jääskeläinen 41512cbf1dSJens Wiklander /* 42512cbf1dSJens Wiklander * Util 43512cbf1dSJens Wiklander */ 44512cbf1dSJens Wiklander size_t get_object_key_bit_size(struct pkcs11_object *obj); 45512cbf1dSJens Wiklander 46512cbf1dSJens Wiklander void release_active_processing(struct pkcs11_session *session); 47512cbf1dSJens Wiklander 48512cbf1dSJens Wiklander /* 49512cbf1dSJens Wiklander * Symmetric crypto algorithm specific functions 50512cbf1dSJens Wiklander */ 51512cbf1dSJens Wiklander bool processing_is_tee_symm(uint32_t proc_id); 52512cbf1dSJens Wiklander 53512cbf1dSJens Wiklander enum pkcs11_rc init_symm_operation(struct pkcs11_session *session, 54512cbf1dSJens Wiklander enum processing_func function, 55512cbf1dSJens Wiklander struct pkcs11_attribute_head *proc_params, 56512cbf1dSJens Wiklander struct pkcs11_object *key); 57512cbf1dSJens Wiklander 58512cbf1dSJens Wiklander enum pkcs11_rc step_symm_operation(struct pkcs11_session *session, 59512cbf1dSJens Wiklander enum processing_func function, 60512cbf1dSJens Wiklander enum processing_step step, 61512cbf1dSJens Wiklander uint32_t ptypes, TEE_Param *params); 62512cbf1dSJens Wiklander 63512cbf1dSJens Wiklander enum pkcs11_rc tee_init_ctr_operation(struct active_processing *processing, 64512cbf1dSJens Wiklander void *proc_params, size_t params_size); 6548799892SRuchika Gupta 6648799892SRuchika Gupta enum pkcs11_rc derive_key_by_symm_enc(struct pkcs11_session *session, 678c499324SRuchika Gupta void **out_buf, uint32_t *out_sz); 6848799892SRuchika Gupta 69512cbf1dSJens Wiklander #endif /*PKCS11_TA_PROCESSING_H*/ 70