xref: /aosp_15_r20/external/tpm2-tss/test/integration/sapi-start-auth-session.int.c (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag /* SPDX-License-Identifier: BSD-2-Clause */
2*758e9fbaSOystein Eftevaag /***********************************************************************
3*758e9fbaSOystein Eftevaag  * Copyright (c) 2017-2018, Intel Corporation
4*758e9fbaSOystein Eftevaag  *
5*758e9fbaSOystein Eftevaag  * All rights reserved.
6*758e9fbaSOystein Eftevaag  ***********************************************************************/
7*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H
8*758e9fbaSOystein Eftevaag #include <config.h>
9*758e9fbaSOystein Eftevaag #endif
10*758e9fbaSOystein Eftevaag 
11*758e9fbaSOystein Eftevaag #include <inttypes.h>
12*758e9fbaSOystein Eftevaag #include <stdio.h>
13*758e9fbaSOystein Eftevaag #include <stdlib.h>
14*758e9fbaSOystein Eftevaag 
15*758e9fbaSOystein Eftevaag #include "tss2_sys.h"
16*758e9fbaSOystein Eftevaag 
17*758e9fbaSOystein Eftevaag #define LOGMODULE test
18*758e9fbaSOystein Eftevaag #include "util/log.h"
19*758e9fbaSOystein Eftevaag #include "test.h"
20*758e9fbaSOystein Eftevaag /*
21*758e9fbaSOystein Eftevaag  * This is an incredibly simple test to create the most simple session
22*758e9fbaSOystein Eftevaag  * (which ends up being a trial policy) and then just tear it down.
23*758e9fbaSOystein Eftevaag  */
24*758e9fbaSOystein Eftevaag int
test_invoke(TSS2_SYS_CONTEXT * sapi_context)25*758e9fbaSOystein Eftevaag test_invoke (TSS2_SYS_CONTEXT *sapi_context)
26*758e9fbaSOystein Eftevaag {
27*758e9fbaSOystein Eftevaag     TSS2_RC rc;
28*758e9fbaSOystein Eftevaag     TPM2B_NONCE nonce_caller = {
29*758e9fbaSOystein Eftevaag         .size   = TPM2_SHA256_DIGEST_SIZE,
30*758e9fbaSOystein Eftevaag         .buffer = {
31*758e9fbaSOystein Eftevaag                 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
32*758e9fbaSOystein Eftevaag                 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
33*758e9fbaSOystein Eftevaag                 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
34*758e9fbaSOystein Eftevaag                 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef
35*758e9fbaSOystein Eftevaag             }
36*758e9fbaSOystein Eftevaag     };
37*758e9fbaSOystein Eftevaag     TPM2B_NONCE nonce_tpm = {
38*758e9fbaSOystein Eftevaag         .size   = TPM2_SHA256_DIGEST_SIZE,
39*758e9fbaSOystein Eftevaag         .buffer = { 0 }
40*758e9fbaSOystein Eftevaag     };
41*758e9fbaSOystein Eftevaag     TPM2B_ENCRYPTED_SECRET encrypted_salt = { 0 };
42*758e9fbaSOystein Eftevaag     TPMI_SH_AUTH_SESSION   session_handle = 0;
43*758e9fbaSOystein Eftevaag     TPMT_SYM_DEF           symmetric      = { .algorithm = TPM2_ALG_NULL };
44*758e9fbaSOystein Eftevaag 
45*758e9fbaSOystein Eftevaag     LOG_INFO("StartAuthSession for TPM2_SE_POLICY (policy session)");
46*758e9fbaSOystein Eftevaag     rc = Tss2_Sys_StartAuthSession (sapi_context,
47*758e9fbaSOystein Eftevaag                                     TPM2_RH_NULL,     /* tpmKey */
48*758e9fbaSOystein Eftevaag                                     TPM2_RH_NULL,     /* bind */
49*758e9fbaSOystein Eftevaag                                     0,               /* cmdAuthsArray */
50*758e9fbaSOystein Eftevaag                                     &nonce_caller,   /* nonceCaller */
51*758e9fbaSOystein Eftevaag                                     &encrypted_salt, /* encryptedSalt */
52*758e9fbaSOystein Eftevaag                                     TPM2_SE_POLICY,   /* sessionType */
53*758e9fbaSOystein Eftevaag                                     &symmetric,      /* symmetric */
54*758e9fbaSOystein Eftevaag                                     TPM2_ALG_SHA256,  /* authHash */
55*758e9fbaSOystein Eftevaag                                     &session_handle, /* sessionHandle */
56*758e9fbaSOystein Eftevaag                                     &nonce_tpm,      /* nonceTPM */
57*758e9fbaSOystein Eftevaag                                     0                /* rspAuthsArray */
58*758e9fbaSOystein Eftevaag                                     );
59*758e9fbaSOystein Eftevaag     if (rc != TSS2_RC_SUCCESS) {
60*758e9fbaSOystein Eftevaag         LOG_ERROR("Tss2_Sys_StartAuthSession failed: 0x%" PRIx32, rc);
61*758e9fbaSOystein Eftevaag         exit(1);
62*758e9fbaSOystein Eftevaag     }
63*758e9fbaSOystein Eftevaag     LOG_INFO("StartAuthSession for TPM2_SE_POLICY success! Session handle: "
64*758e9fbaSOystein Eftevaag                "0x%" PRIx32, session_handle);
65*758e9fbaSOystein Eftevaag     /*
66*758e9fbaSOystein Eftevaag      * Clean out the session we've created. Would be nice if we didn't have
67*758e9fbaSOystein Eftevaag      * to do this ...
68*758e9fbaSOystein Eftevaag      */
69*758e9fbaSOystein Eftevaag     rc = Tss2_Sys_FlushContext (sapi_context, session_handle);
70*758e9fbaSOystein Eftevaag     if (rc != TSS2_RC_SUCCESS) {
71*758e9fbaSOystein Eftevaag         LOG_ERROR("Tss2_Sys_FlushContext failed: 0x%" PRIx32, rc);
72*758e9fbaSOystein Eftevaag         exit(1);
73*758e9fbaSOystein Eftevaag     }
74*758e9fbaSOystein Eftevaag     LOG_INFO("Flushed context for session handle: 0x%" PRIx32 " success!",
75*758e9fbaSOystein Eftevaag                session_handle);
76*758e9fbaSOystein Eftevaag 
77*758e9fbaSOystein Eftevaag     return 0;
78*758e9fbaSOystein Eftevaag }
79