ee049fa802
Use the iobuf API instead of relying on own buffer management. It also provides consistency between marshaling and unmarshaling code paths for propagating return values instead of overloading the values of existing variables. BUG=b:36598499 Change-Id: Iec0bbff1312e8e6ec616d1528db8667f32e682c9 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://review.coreboot.org/19063 Tested-by: build bot (Jenkins) Reviewed-by: Furquan Shaikh <furquan@google.com>
46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
/*
|
|
* Copyright 2016 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
#ifndef __SRC_LIB_TPM2_MARSHALING_H
|
|
#define __SRC_LIB_TPM2_MARSHALING_H
|
|
|
|
#include <commonlib/iobuf.h>
|
|
#include "tpm2_tlcl_structures.h"
|
|
|
|
/* The below functions are used to serialize/deserialize TPM2 commands. */
|
|
|
|
/**
|
|
* tpm_marshal_command
|
|
*
|
|
* Given a structure containing a TPM2 command, serialize the structure for
|
|
* sending it to the TPM.
|
|
*
|
|
* @command: code of the TPM2 command to marshal
|
|
* @tpm_command_body: a pointer to the command specific structure
|
|
* @ob: output buffer where command is marshaled to
|
|
*
|
|
* Returns 0 on success or -1 on error.
|
|
*
|
|
*/
|
|
int tpm_marshal_command(TPM_CC command, void *tpm_command_body,
|
|
struct obuf *ob);
|
|
|
|
/**
|
|
* tpm_unmarshal_response
|
|
*
|
|
* Given a buffer received from the TPM in response to a certain command,
|
|
* deserialize the buffer into the expeced response structure.
|
|
*
|
|
* struct tpm2_response is a union of all possible responses.
|
|
*
|
|
* @command: code of the TPM2 command for which a response is unmarshaled
|
|
* @ib: input buffer containing the serialized response.
|
|
*
|
|
* Returns a pointer to the deserialized response or NULL in case of
|
|
* unmarshaling problems.
|
|
*/
|
|
struct tpm2_response *tpm_unmarshal_response(TPM_CC command, struct ibuf *ib);
|
|
|
|
#endif // __SRC_LIB_TPM2_MARSHALING_H
|