Coverage Report

Created: 2026-08-14 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/tpm2-tss/src/tss2-sys/api/Tss2_Sys_Commit.c
Line
Count
Source
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" // IWYU pragma: keep
9
#endif
10
11
#include "sysapi_util.h"     // for _TSS2_SYS_CONTEXT_BLOB, syscontext_cast
12
#include "tss2_common.h"     // for TSS2_RC, TSS2_SYS_RC_BAD_REFERENCE, UINT16
13
#include "tss2_mu.h"         // for Tss2_MU_TPM2B_ECC_POINT_Unmarshal, Tss2...
14
#include "tss2_sys.h"        // for TSS2_SYS_CONTEXT, TSS2L_SYS_AUTH_COMMAND
15
#include "tss2_tpm2_types.h" // for TPM2B_ECC_POINT, TPM2B_ECC_PARAMETER
16
17
TSS2_RC
18
Tss2_Sys_Commit_Prepare(TSS2_SYS_CONTEXT           *sysContext,
19
                        TPMI_DH_OBJECT              signHandle,
20
                        const TPM2B_ECC_POINT      *P1,
21
                        const TPM2B_SENSITIVE_DATA *s2,
22
0
                        const TPM2B_ECC_PARAMETER  *y2) {
23
0
    TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
24
0
    TSS2_RC                rval;
25
26
0
    if (!ctx)
27
0
        return TSS2_SYS_RC_BAD_REFERENCE;
28
29
0
    rval = CommonPreparePrologue(ctx, TPM2_CC_Commit);
30
0
    if (rval)
31
0
        return rval;
32
33
0
    rval = Tss2_MU_UINT32_Marshal(signHandle, ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData);
34
0
    if (rval)
35
0
        return rval;
36
37
0
    if (!P1) {
38
0
        ctx->decryptNull = 1;
39
40
0
        rval = Tss2_MU_UINT16_Marshal(0, ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData);
41
0
    } else {
42
0
        rval = Tss2_MU_TPM2B_ECC_POINT_Marshal(P1, ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData);
43
0
    }
44
45
0
    if (rval)
46
0
        return rval;
47
48
0
    if (!s2) {
49
0
        rval = Tss2_MU_UINT16_Marshal(0, ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData);
50
51
0
    } else {
52
53
0
        rval = Tss2_MU_TPM2B_SENSITIVE_DATA_Marshal(s2, ctx->cmdBuffer, ctx->maxCmdSize,
54
0
                                                    &ctx->nextData);
55
0
    }
56
57
0
    if (rval)
58
0
        return rval;
59
60
0
    if (!y2) {
61
0
        rval = Tss2_MU_UINT16_Marshal(0, ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData);
62
63
0
    } else {
64
65
0
        rval = Tss2_MU_TPM2B_ECC_PARAMETER_Marshal(y2, ctx->cmdBuffer, ctx->maxCmdSize,
66
0
                                                   &ctx->nextData);
67
0
    }
68
69
0
    if (rval)
70
0
        return rval;
71
72
0
    ctx->decryptAllowed = 1;
73
0
    ctx->encryptAllowed = 1;
74
0
    ctx->authAllowed = 1;
75
76
0
    return CommonPrepareEpilogue(ctx);
77
0
}
78
79
TSS2_RC
80
Tss2_Sys_Commit_Complete(TSS2_SYS_CONTEXT *sysContext,
81
                         TPM2B_ECC_POINT  *K,
82
                         TPM2B_ECC_POINT  *L,
83
                         TPM2B_ECC_POINT  *E,
84
0
                         UINT16           *counter) {
85
0
    TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
86
0
    TSS2_RC                rval;
87
88
0
    if (!ctx)
89
0
        return TSS2_SYS_RC_BAD_REFERENCE;
90
91
0
    rval = CommonComplete(ctx);
92
0
    if (rval)
93
0
        return rval;
94
95
0
    rval = Tss2_MU_TPM2B_ECC_POINT_Unmarshal(ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData, K);
96
0
    if (rval)
97
0
        return rval;
98
99
0
    rval = Tss2_MU_TPM2B_ECC_POINT_Unmarshal(ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData, L);
100
0
    if (rval)
101
0
        return rval;
102
103
0
    rval = Tss2_MU_TPM2B_ECC_POINT_Unmarshal(ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData, E);
104
0
    if (rval)
105
0
        return rval;
106
107
0
    return Tss2_MU_UINT16_Unmarshal(ctx->cmdBuffer, ctx->maxCmdSize, &ctx->nextData, counter);
108
0
}
109
110
TSS2_RC
111
Tss2_Sys_Commit(TSS2_SYS_CONTEXT             *sysContext,
112
                TPMI_DH_OBJECT                signHandle,
113
                TSS2L_SYS_AUTH_COMMAND const *cmdAuthsArray,
114
                const TPM2B_ECC_POINT        *P1,
115
                const TPM2B_SENSITIVE_DATA   *s2,
116
                const TPM2B_ECC_PARAMETER    *y2,
117
                TPM2B_ECC_POINT              *K,
118
                TPM2B_ECC_POINT              *L,
119
                TPM2B_ECC_POINT              *E,
120
                UINT16                       *counter,
121
0
                TSS2L_SYS_AUTH_RESPONSE      *rspAuthsArray) {
122
0
    TSS2_SYS_CONTEXT_BLOB *ctx = syscontext_cast(sysContext);
123
0
    TSS2_RC                rval;
124
125
0
    rval = Tss2_Sys_Commit_Prepare(sysContext, signHandle, P1, s2, y2);
126
0
    if (rval)
127
0
        return rval;
128
129
0
    rval = CommonOneCall(ctx, cmdAuthsArray, rspAuthsArray);
130
0
    if (rval)
131
0
        return rval;
132
133
0
    return Tss2_Sys_Commit_Complete(sysContext, K, L, E, counter);
134
0
}