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