xref: /optee_os/ta/pkcs11/src/sanitize_object.h (revision dcad34094cfb2e608a274baa3f6fd6e7ac3ed44a)
163f89caaSJens Wiklander /* SPDX-License-Identifier: BSD-2-Clause */
263f89caaSJens Wiklander /*
363f89caaSJens Wiklander  * Copyright (c) 2017-2020, Linaro Limited
463f89caaSJens Wiklander  */
563f89caaSJens Wiklander 
663f89caaSJens Wiklander #ifndef PKCS11_TA_SANITIZE_OBJECT_H
763f89caaSJens Wiklander #define PKCS11_TA_SANITIZE_OBJECT_H
863f89caaSJens Wiklander 
963f89caaSJens Wiklander #include "serializer.h"
1063f89caaSJens Wiklander 
1163f89caaSJens Wiklander /*
1263f89caaSJens Wiklander  * sanitize_consistent_class_and_type - Check object type matches object class
1363f89caaSJens Wiklander  *
1463f89caaSJens Wiklander  * @attrs - object attributes
1563f89caaSJens Wiklander  * Return true if class/type matches, else return false
1663f89caaSJens Wiklander  */
1763f89caaSJens Wiklander bool sanitize_consistent_class_and_type(struct obj_attrs *attrs);
1863f89caaSJens Wiklander 
1963f89caaSJens Wiklander /**
2063f89caaSJens Wiklander  * sanitize_client_object - Setup a serializer from a serialized object
2163f89caaSJens Wiklander  *
2263f89caaSJens Wiklander  * @dst - output structure tracking the generated serial object
2363f89caaSJens Wiklander  * @head - pointer to the formatted serialized object (its head)
2463f89caaSJens Wiklander  * @size - byte size of the serialized binary blob
25*dcad3409SRuchika Gupta  * @class_hint - Hint for class to be added to template if not presnet
26*dcad3409SRuchika Gupta  *               in serialized object.
27*dcad3409SRuchika Gupta  * @type_hint - Hint for type to be added to template if not presnet
28*dcad3409SRuchika Gupta  *               in serialized object.
2963f89caaSJens Wiklander  *
3063f89caaSJens Wiklander  * This function copies an attribute list from a client API attribute head
3163f89caaSJens Wiklander  * into a PKCS11 TA internal attribute structure. It generates a serialized
3263f89caaSJens Wiklander  * attribute list with a consistent format and identified attribute IDs.
3363f89caaSJens Wiklander  *
3463f89caaSJens Wiklander  * @head points to a blob starting with a pkcs11 attribute header.
3563f89caaSJens Wiklander  * @head may point to an unaligned address.
3663f89caaSJens Wiklander  * This function allocates, fills and returns a serialized attribute list
3763f89caaSJens Wiklander  * into a serializer container.
3863f89caaSJens Wiklander  */
3963f89caaSJens Wiklander enum pkcs11_rc sanitize_client_object(struct obj_attrs **dst, void *head,
40*dcad3409SRuchika Gupta 				      size_t size, uint32_t class_hint,
41*dcad3409SRuchika Gupta 				      uint32_t type_hint);
4263f89caaSJens Wiklander 
4363f89caaSJens Wiklander /* Debug: dump attribute content as debug traces */
4463f89caaSJens Wiklander void trace_attributes_from_api_head(const char *prefix, void *ref, size_t size);
4563f89caaSJens Wiklander 
4663f89caaSJens Wiklander #endif /*PKCS11_TA_SANITIZE_OBJECT_H*/
47