xref: /optee_os/ta/pkcs11/src/serializer.h (revision 919323d94ecb6b29ef8abf9d25ca926c8abc6209)
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2017-2020, Linaro Limited
4  */
5 
6 #ifndef PKCS11_TA_SERIALIZER_H
7 #define PKCS11_TA_SERIALIZER_H
8 
9 #include <pkcs11_ta.h>
10 #include <stdbool.h>
11 #include <stdint.h>
12 
13 struct pkcs11_client;
14 struct pkcs11_session;
15 
16 /*
17  * Util routines for serializes unformated arguments in a client memref
18  */
19 struct serialargs {
20 	char *start;
21 	char *next;
22 	size_t size;
23 };
24 
25 void serialargs_init(struct serialargs *args, void *in, size_t size);
26 
27 enum pkcs11_rc serialargs_get(struct serialargs *args, void *out, size_t sz);
28 
29 enum pkcs11_rc serialargs_get_ptr(struct serialargs *args, void **out,
30 				  size_t size);
31 
32 enum pkcs11_rc serialargs_alloc_and_get(struct serialargs *args,
33 					void **out, size_t size);
34 
35 bool serialargs_remaining_bytes(struct serialargs *args);
36 
37 enum pkcs11_rc serialargs_get_session_from_handle(struct serialargs *args,
38 						  struct pkcs11_client *client,
39 						  struct pkcs11_session **sess);
40 #endif /*PKCS11_TA_SERIALIZER_H*/
41