aboutsummaryrefslogtreecommitdiff
path: root/Marshal_EvictControl.c
diff options
context:
space:
mode:
authorJocelyn Bohr <bohr@chromium.org>2015-07-30 10:44:16 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-10 20:09:27 +0000
commita4ed3aa64664a1241ea982d685db744caaae3ffa (patch)
tree72d1ff6899d2321ca8f53d9d6665e46c8b6f1196 /Marshal_EvictControl.c
parentd02d5b7076ec51d855c61a67897286b80ef436c2 (diff)
downloadtpm2-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_EvictControl.c')
-rw-r--r--Marshal_EvictControl.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/Marshal_EvictControl.c b/Marshal_EvictControl.c
new file mode 100644
index 0000000..9938b18
--- /dev/null
+++ b/Marshal_EvictControl.c
@@ -0,0 +1,64 @@
+// 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 "EvictControl_fp.h"
+
+TPM_RC EvictControl_In_Unmarshal(EvictControl_In* target,
+ TPM_HANDLE request_handles[],
+ BYTE** buffer,
+ INT32* size) {
+ TPM_RC result = TPM_RC_SUCCESS;
+ // Get request handles from request_handles array.
+ target->auth = request_handles[0];
+ target->objectHandle = request_handles[1];
+ // Unmarshal request parameters.
+ result =
+ TPMI_DH_PERSISTENT_Unmarshal(&target->persistentHandle, buffer, size);
+ if (result != TPM_RC_SUCCESS) {
+ return result;
+ }
+ return result;
+}
+
+TPM_RC Exec_EvictControl(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;
+ EvictControl_In in;
+#ifdef TPM_CC_EvictControl
+ 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 =
+ EvictControl_In_Unmarshal(&in, request_handles, request_parameter_buffer,
+ request_parameter_buffer_size);
+ if (result != TPM_RC_SUCCESS) {
+ return result;
+ }
+ // Execute command.
+ result = TPM2_EvictControl(&in);
+ if (result != TPM_RC_SUCCESS) {
+ return result;
+ }
+#ifdef TPM_CC_EvictControl
+ response_buffer = MemoryGetResponseBuffer(TPM_CC_EvictControl) + 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;
+}