• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /***********************************************************************;
3  * Copyright (c) 2015 - 2017, Intel Corporation
4  * All rights reserved.
5  ***********************************************************************/
6 
7 #ifdef HAVE_CONFIG_H
8 #include <config.h>
9 #endif
10 
11 #include "tss2_tpm2_types.h"
12 #include "tss2_mu.h"
13 #include "sysapi_util.h"
14 
Tss2_Sys_GetCommandAuditDigest_Prepare(TSS2_SYS_CONTEXT * sysContext,TPMI_RH_ENDORSEMENT privacyHandle,TPMI_DH_OBJECT signHandle,const TPM2B_DATA * qualifyingData,const TPMT_SIG_SCHEME * inScheme)15 TSS2_RC Tss2_Sys_GetCommandAuditDigest_Prepare(
16     TSS2_SYS_CONTEXT *sysContext,
17     TPMI_RH_ENDORSEMENT privacyHandle,
18     TPMI_DH_OBJECT signHandle,
19     const TPM2B_DATA *qualifyingData,
20     const TPMT_SIG_SCHEME *inScheme)
21 {
22     _TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
23     TSS2_RC rval;
24 
25     if (!ctx || !inScheme)
26         return TSS2_SYS_RC_BAD_REFERENCE;
27 
28     rval = CommonPreparePrologue(ctx, TPM2_CC_GetCommandAuditDigest);
29     if (rval)
30         return rval;
31 
32     rval = Tss2_MU_UINT32_Marshal(privacyHandle, ctx->cmdBuffer,
33                                   ctx->maxCmdSize,
34                                   &ctx->nextData);
35     if (rval)
36         return rval;
37 
38     rval = Tss2_MU_UINT32_Marshal(signHandle, ctx->cmdBuffer,
39                                   ctx->maxCmdSize,
40                                   &ctx->nextData);
41     if (rval)
42         return rval;
43 
44     if (!qualifyingData) {
45         ctx->decryptNull = 1;
46 
47         rval = Tss2_MU_UINT16_Marshal(0, ctx->cmdBuffer,
48                                       ctx->maxCmdSize,
49                                       &ctx->nextData);
50     } else {
51 
52         rval = Tss2_MU_TPM2B_DATA_Marshal(qualifyingData, ctx->cmdBuffer,
53                                           ctx->maxCmdSize,
54                                           &ctx->nextData);
55     }
56 
57     if (rval)
58         return rval;
59 
60     rval = Tss2_MU_TPMT_SIG_SCHEME_Marshal(inScheme, ctx->cmdBuffer,
61                                            ctx->maxCmdSize,
62                                            &ctx->nextData);
63     if (rval)
64         return rval;
65 
66     ctx->decryptAllowed = 1;
67     ctx->encryptAllowed = 1;
68     ctx->authAllowed = 1;
69 
70     return CommonPrepareEpilogue(ctx);
71 }
72 
Tss2_Sys_GetCommandAuditDigest_Complete(TSS2_SYS_CONTEXT * sysContext,TPM2B_ATTEST * auditInfo,TPMT_SIGNATURE * signature)73 TSS2_RC Tss2_Sys_GetCommandAuditDigest_Complete(
74     TSS2_SYS_CONTEXT *sysContext,
75     TPM2B_ATTEST *auditInfo,
76     TPMT_SIGNATURE *signature)
77 {
78     _TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
79     TSS2_RC rval;
80 
81     if (!ctx)
82         return TSS2_SYS_RC_BAD_REFERENCE;
83 
84     rval = CommonComplete(ctx);
85     if (rval)
86         return rval;
87 
88     rval = Tss2_MU_TPM2B_ATTEST_Unmarshal(ctx->cmdBuffer,
89                                           ctx->maxCmdSize,
90                                           &ctx->nextData, auditInfo);
91     if (rval)
92         return rval;
93 
94     return Tss2_MU_TPMT_SIGNATURE_Unmarshal(ctx->cmdBuffer,
95                                             ctx->maxCmdSize,
96                                             &ctx->nextData, signature);
97 }
98 
Tss2_Sys_GetCommandAuditDigest(TSS2_SYS_CONTEXT * sysContext,TPMI_RH_ENDORSEMENT privacyHandle,TPMI_DH_OBJECT signHandle,TSS2L_SYS_AUTH_COMMAND const * cmdAuthsArray,const TPM2B_DATA * qualifyingData,const TPMT_SIG_SCHEME * inScheme,TPM2B_ATTEST * auditInfo,TPMT_SIGNATURE * signature,TSS2L_SYS_AUTH_RESPONSE * rspAuthsArray)99 TSS2_RC Tss2_Sys_GetCommandAuditDigest(
100     TSS2_SYS_CONTEXT *sysContext,
101     TPMI_RH_ENDORSEMENT privacyHandle,
102     TPMI_DH_OBJECT signHandle,
103     TSS2L_SYS_AUTH_COMMAND const *cmdAuthsArray,
104     const TPM2B_DATA *qualifyingData,
105     const TPMT_SIG_SCHEME *inScheme,
106     TPM2B_ATTEST *auditInfo,
107     TPMT_SIGNATURE *signature,
108     TSS2L_SYS_AUTH_RESPONSE *rspAuthsArray)
109 {
110     _TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
111     TSS2_RC rval;
112 
113     if (!inScheme)
114         return TSS2_SYS_RC_BAD_REFERENCE;
115 
116     rval = Tss2_Sys_GetCommandAuditDigest_Prepare(sysContext, privacyHandle,
117                                                   signHandle, qualifyingData,
118                                                   inScheme);
119     if (rval)
120         return rval;
121 
122     rval = CommonOneCall(ctx, cmdAuthsArray, rspAuthsArray);
123     if (rval)
124         return rval;
125 
126     return Tss2_Sys_GetCommandAuditDigest_Complete(sysContext, auditInfo,
127                                                    signature);
128 }
129