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