xref: /optee_os/ta/pkcs11/src/processing.h (revision fa247a2a296e38934a5835558abd4ec5f1209a94)
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 
21*fa247a2aSRuchika Gupta enum pkcs11_rc entry_generate_secret(struct pkcs11_client *client,
22*fa247a2aSRuchika Gupta 				     uint32_t ptypes, TEE_Param *params);
23*fa247a2aSRuchika 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 
33512cbf1dSJens Wiklander /*
34512cbf1dSJens Wiklander  * Util
35512cbf1dSJens Wiklander  */
36512cbf1dSJens Wiklander size_t get_object_key_bit_size(struct pkcs11_object *obj);
37512cbf1dSJens Wiklander 
38512cbf1dSJens Wiklander void release_active_processing(struct pkcs11_session *session);
39512cbf1dSJens Wiklander 
40512cbf1dSJens Wiklander /*
41512cbf1dSJens Wiklander  * Symmetric crypto algorithm specific functions
42512cbf1dSJens Wiklander  */
43512cbf1dSJens Wiklander bool processing_is_tee_symm(uint32_t proc_id);
44512cbf1dSJens Wiklander 
45512cbf1dSJens Wiklander enum pkcs11_rc init_symm_operation(struct pkcs11_session *session,
46512cbf1dSJens Wiklander 				   enum processing_func function,
47512cbf1dSJens Wiklander 				   struct pkcs11_attribute_head *proc_params,
48512cbf1dSJens Wiklander 				   struct pkcs11_object *key);
49512cbf1dSJens Wiklander 
50512cbf1dSJens Wiklander enum pkcs11_rc step_symm_operation(struct pkcs11_session *session,
51512cbf1dSJens Wiklander 				   enum processing_func function,
52512cbf1dSJens Wiklander 				   enum processing_step step,
53512cbf1dSJens Wiklander 				   uint32_t ptypes, TEE_Param *params);
54512cbf1dSJens Wiklander 
55512cbf1dSJens Wiklander enum pkcs11_rc tee_init_ctr_operation(struct active_processing *processing,
56512cbf1dSJens Wiklander 				      void *proc_params, size_t params_size);
57512cbf1dSJens Wiklander #endif /*PKCS11_TA_PROCESSING_H*/
58