/src/tpm2/Marshal_PolicyGetDigest.c
Line  | Count  | Source  | 
1  |  | // Copyright 2015 The Chromium OS Authors. All rights reserved.  | 
2  |  | // Use of this source code is governed by a BSD-style license that can be  | 
3  |  | // found in the LICENSE file.  | 
4  |  |  | 
5  |  | // THIS CODE IS GENERATED - DO NOT MODIFY!  | 
6  |  |  | 
7  |  | #include "MemoryLib_fp.h"  | 
8  |  | #include "PolicyGetDigest_fp.h"  | 
9  |  |  | 
10  |  | #if IS_CC_ENABLED(PolicyGetDigest)  | 
11  |  | static UINT16 PolicyGetDigest_Out_Marshal(PolicyGetDigest_Out* source,  | 
12  |  |                                           TPMI_ST_COMMAND_TAG tag,  | 
13  |  |                                           BYTE** buffer,  | 
14  | 0  |                                           INT32* size) { | 
15  | 0  |   UINT16 total_size = 0;  | 
16  | 0  |   UINT32 parameter_size = 0;  | 
17  | 0  |   BYTE* parameter_size_location;  | 
18  | 0  |   INT32 parameter_size_size = sizeof(UINT32);  | 
19  | 0  |   UINT32 num_response_handles = 0;  | 
20  |  |   // Add parameter_size=0 to indicate size of the parameter area. Will be  | 
21  |  |   // replaced later by computed parameter_size.  | 
22  | 0  |   if (tag == TPM_ST_SESSIONS) { | 
23  | 0  |     parameter_size_location = *buffer;  | 
24  |  |     // Don't add to total_size, but increment *buffer and decrement *size.  | 
25  | 0  |     UINT32_Marshal(¶meter_size, buffer, size);  | 
26  | 0  |   }  | 
27  |  |   // Marshal response parameters.  | 
28  | 0  |   total_size += TPM2B_DIGEST_Marshal(&source->policyDigest, buffer, size);  | 
29  |  |   // Compute actual parameter_size. Don't add result to total_size.  | 
30  | 0  |   if (tag == TPM_ST_SESSIONS) { | 
31  | 0  |     parameter_size = total_size - num_response_handles * sizeof(TPM_HANDLE);  | 
32  | 0  |     UINT32_Marshal(¶meter_size, ¶meter_size_location,  | 
33  | 0  |                    ¶meter_size_size);  | 
34  | 0  |   }  | 
35  | 0  |   return total_size;  | 
36  | 0  | }  | 
37  |  | #endif  | 
38  |  |  | 
39  |  | static TPM_RC PolicyGetDigest_In_Unmarshal(PolicyGetDigest_In* target,  | 
40  |  |                                            TPM_HANDLE request_handles[],  | 
41  |  |                                            BYTE** buffer,  | 
42  | 0  |                                            INT32* size) { | 
43  | 0  |   TPM_RC result = TPM_RC_SUCCESS;  | 
44  |  |   // Get request handles from request_handles array.  | 
45  | 0  |   target->policySession = request_handles[0];  | 
46  | 0  |   if ((result == TPM_RC_SUCCESS) && *size) { | 
47  | 0  |     result = TPM_RC_SIZE;  | 
48  | 0  |   }  | 
49  | 0  |   return result;  | 
50  | 0  | }  | 
51  |  |  | 
52  |  | TPM_RC Exec_PolicyGetDigest(TPMI_ST_COMMAND_TAG tag,  | 
53  |  |                             BYTE** request_parameter_buffer,  | 
54  |  |                             INT32* request_parameter_buffer_size,  | 
55  |  |                             TPM_HANDLE request_handles[],  | 
56  |  |                             UINT32* response_handle_buffer_size,  | 
57  | 0  |                             UINT32* response_parameter_buffer_size) { | 
58  | 0  |   TPM_RC result = TPM_RC_SUCCESS;  | 
59  | 0  |   PolicyGetDigest_In in;  | 
60  | 0  |   PolicyGetDigest_Out out;  | 
61  | 0  | #if IS_CC_ENABLED(PolicyGetDigest)  | 
62  | 0  |   BYTE* response_buffer;  | 
63  | 0  |   INT32 response_buffer_size;  | 
64  | 0  |   UINT16 bytes_marshalled;  | 
65  | 0  |   UINT16 num_response_handles = 0;  | 
66  | 0  | #endif  | 
67  | 0  |   *response_handle_buffer_size = 0;  | 
68  | 0  |   *response_parameter_buffer_size = 0;  | 
69  |  |   // Unmarshal request parameters to input structure.  | 
70  | 0  |   result = PolicyGetDigest_In_Unmarshal(&in, request_handles,  | 
71  | 0  |                                         request_parameter_buffer,  | 
72  | 0  |                                         request_parameter_buffer_size);  | 
73  | 0  |   if (result != TPM_RC_SUCCESS) { | 
74  | 0  |     return result;  | 
75  | 0  |   }  | 
76  |  |   // Execute command.  | 
77  | 0  |   result = TPM2_PolicyGetDigest(&in, &out);  | 
78  | 0  |   if (result != TPM_RC_SUCCESS) { | 
79  | 0  |     return result;  | 
80  | 0  |   }  | 
81  |  | // Marshal output structure to global response buffer.  | 
82  | 0  | #if IS_CC_ENABLED(PolicyGetDigest)  | 
83  | 0  |   response_buffer = MemoryGetResponseBuffer(TPM_CC_PolicyGetDigest) + 10;  | 
84  | 0  |   response_buffer_size = MAX_RESPONSE_SIZE - 10;  | 
85  | 0  |   bytes_marshalled = PolicyGetDigest_Out_Marshal(&out, tag, &response_buffer,  | 
86  | 0  |                                                  &response_buffer_size);  | 
87  | 0  |   *response_handle_buffer_size = num_response_handles * sizeof(TPM_HANDLE);  | 
88  | 0  |   *response_parameter_buffer_size =  | 
89  | 0  |       bytes_marshalled - *response_handle_buffer_size;  | 
90  | 0  |   return TPM_RC_SUCCESS;  | 
91  | 0  | #endif  | 
92  | 0  |   return TPM_RC_COMMAND_CODE;  | 
93  | 0  | }  |