diff options
author | Jocelyn Bohr <bohr@chromium.org> | 2015-07-30 10:44:16 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-08-10 20:09:27 +0000 |
commit | a4ed3aa64664a1241ea982d685db744caaae3ffa (patch) | |
tree | 72d1ff6899d2321ca8f53d9d6665e46c8b6f1196 /Marshal_ChangeEPS.c | |
parent | d02d5b7076ec51d855c61a67897286b80ef436c2 (diff) | |
download | tpm2-a4ed3aa64664a1241ea982d685db744caaae3ffa.tar.gz |
Implementation files for command marshaling.
Generated C source and header files which add functions to unmarshal command
requests, execute commands, and marshal command responses. This
(tenatively) adds all final missing parts of libtpm2. These files are
generated from command_generator.py in CL:290556.
TEST=$ sudo emerge tpm2
builds libtpm2.a
Locally I was able to call ExecCommand to execute TPM2_Startup with
success after software TPM initialization.
BUG=chromium:501639
CQ-DEPEND=CL:290556
Change-Id: Ieb3f208795a21a172dea25b35027c5aceba7ee08
Reviewed-on: https://chromium-review.googlesource.com/289813
Tested-by: Jocelyn Bohr <bohr@chromium.org>
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Jocelyn Bohr <bohr@chromium.org>
Diffstat (limited to 'Marshal_ChangeEPS.c')
-rw-r--r-- | Marshal_ChangeEPS.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/Marshal_ChangeEPS.c b/Marshal_ChangeEPS.c new file mode 100644 index 0000000..0abe0db --- /dev/null +++ b/Marshal_ChangeEPS.c @@ -0,0 +1,57 @@ +// Copyright 2015 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. + +// THIS CODE IS GENERATED - DO NOT MODIFY! + +#include "MemoryLib_fp.h" +#include "ChangeEPS_fp.h" + +TPM_RC ChangeEPS_In_Unmarshal(ChangeEPS_In* target, + TPM_HANDLE request_handles[], + BYTE** buffer, + INT32* size) { + TPM_RC result = TPM_RC_SUCCESS; + // Get request handles from request_handles array. + target->authHandle = request_handles[0]; + return result; +} + +TPM_RC Exec_ChangeEPS(TPMI_ST_COMMAND_TAG tag, + BYTE** request_parameter_buffer, + INT32* request_parameter_buffer_size, + TPM_HANDLE request_handles[], + UINT32* response_handle_buffer_size, + UINT32* response_parameter_buffer_size) { + TPM_RC result = TPM_RC_SUCCESS; + ChangeEPS_In in; +#ifdef TPM_CC_ChangeEPS + BYTE* response_buffer; + INT32 response_buffer_size; +#endif + *response_handle_buffer_size = 0; + *response_parameter_buffer_size = 0; + // Unmarshal request parameters to input structure. + result = + ChangeEPS_In_Unmarshal(&in, request_handles, request_parameter_buffer, + request_parameter_buffer_size); + if (result != TPM_RC_SUCCESS) { + return result; + } + // Execute command. + result = TPM2_ChangeEPS(&in); + if (result != TPM_RC_SUCCESS) { + return result; + } +#ifdef TPM_CC_ChangeEPS + response_buffer = MemoryGetResponseBuffer(TPM_CC_ChangeEPS) + 10; + response_buffer_size = MAX_RESPONSE_SIZE - 10; + // Add parameter_size field, always equal to 0 here. + if (tag == TPM_ST_SESSIONS) { + UINT32_Marshal(response_parameter_buffer_size, &response_buffer, + &response_buffer_size); + } + return TPM_RC_SUCCESS; +#endif + return TPM_RC_COMMAND_CODE; +} |