xref: /optee_os/ta/pkcs11/src/processing.h (revision 512cbf1d30ddce3513abf2b08d4063d5c8415a40)
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