123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /*
- * Copyright (c) 2022, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
- #include <assert.h>
- #include <common/debug.h>
- #include "rse_comms_protocol.h"
- psa_status_t rse_protocol_serialize_msg(psa_handle_t handle,
- int16_t type,
- const psa_invec *in_vec,
- uint8_t in_len,
- const psa_outvec *out_vec,
- uint8_t out_len,
- struct serialized_rse_comms_msg_t *msg,
- size_t *msg_len)
- {
- psa_status_t status;
- assert(msg != NULL);
- assert(msg_len != NULL);
- assert(in_vec != NULL);
- switch (msg->header.protocol_ver) {
- case RSE_COMMS_PROTOCOL_EMBED:
- status = rse_protocol_embed_serialize_msg(handle, type, in_vec, in_len, out_vec,
- out_len, &msg->msg.embed, msg_len);
- if (status != PSA_SUCCESS) {
- return status;
- }
- break;
- case RSE_COMMS_PROTOCOL_POINTER_ACCESS:
- status = rse_protocol_pointer_access_serialize_msg(handle, type, in_vec, in_len,
- out_vec, out_len,
- &msg->msg.pointer_access,
- msg_len);
- if (status != PSA_SUCCESS) {
- return status;
- }
- break;
- default:
- return PSA_ERROR_NOT_SUPPORTED;
- }
- *msg_len += sizeof(struct serialized_rse_comms_header_t);
- return PSA_SUCCESS;
- }
- psa_status_t rse_protocol_deserialize_reply(psa_outvec *out_vec,
- uint8_t out_len,
- psa_status_t *return_val,
- const struct serialized_rse_comms_reply_t *reply,
- size_t reply_size)
- {
- assert(reply != NULL);
- assert(return_val != NULL);
- switch (reply->header.protocol_ver) {
- case RSE_COMMS_PROTOCOL_EMBED:
- return rse_protocol_embed_deserialize_reply(out_vec, out_len, return_val,
- &reply->reply.embed, reply_size);
- case RSE_COMMS_PROTOCOL_POINTER_ACCESS:
- return rse_protocol_pointer_access_deserialize_reply(out_vec, out_len, return_val,
- &reply->reply.pointer_access,
- reply_size);
- default:
- return PSA_ERROR_NOT_SUPPORTED;
- }
- return PSA_SUCCESS;
- }
|