xref: /aosp_15_r20/external/tpm2-tss/test/helper/tpm_transientempty.c (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
1*758e9fbaSOystein Eftevaag #ifdef HAVE_CONFIG_H
2*758e9fbaSOystein Eftevaag #include <config.h>
3*758e9fbaSOystein Eftevaag #endif
4*758e9fbaSOystein Eftevaag 
5*758e9fbaSOystein Eftevaag #include <stdbool.h>
6*758e9fbaSOystein Eftevaag #include <stdlib.h>
7*758e9fbaSOystein Eftevaag #include <inttypes.h>
8*758e9fbaSOystein Eftevaag 
9*758e9fbaSOystein Eftevaag #include "tss2_sys.h"
10*758e9fbaSOystein Eftevaag 
11*758e9fbaSOystein Eftevaag #define LOGMODULE test
12*758e9fbaSOystein Eftevaag #include "util/log.h"
13*758e9fbaSOystein Eftevaag #include "test-options.h"
14*758e9fbaSOystein Eftevaag #include "context-util.h"
15*758e9fbaSOystein Eftevaag 
16*758e9fbaSOystein Eftevaag #define TAB_SIZE(x) (sizeof(x)/sizeof(x[0]))
17*758e9fbaSOystein Eftevaag 
18*758e9fbaSOystein Eftevaag int
main(int argc,char * argv[])19*758e9fbaSOystein Eftevaag main (int argc, char *argv[])
20*758e9fbaSOystein Eftevaag {
21*758e9fbaSOystein Eftevaag     TSS2_RC rc;
22*758e9fbaSOystein Eftevaag     TSS2_SYS_CONTEXT *sapi_context;
23*758e9fbaSOystein Eftevaag 
24*758e9fbaSOystein Eftevaag     test_opts_t opts = {
25*758e9fbaSOystein Eftevaag         .tcti_type      = TCTI_DEFAULT,
26*758e9fbaSOystein Eftevaag         .device_file    = DEVICE_PATH_DEFAULT,
27*758e9fbaSOystein Eftevaag         .socket_address = HOSTNAME_DEFAULT,
28*758e9fbaSOystein Eftevaag         .socket_port    = PORT_DEFAULT,
29*758e9fbaSOystein Eftevaag     };
30*758e9fbaSOystein Eftevaag 
31*758e9fbaSOystein Eftevaag     get_test_opts_from_env (&opts);
32*758e9fbaSOystein Eftevaag     if (sanity_check_test_opts (&opts) != 0)
33*758e9fbaSOystein Eftevaag         exit (1);
34*758e9fbaSOystein Eftevaag 
35*758e9fbaSOystein Eftevaag     sapi_context = sapi_init_from_opts (&opts);
36*758e9fbaSOystein Eftevaag     if (sapi_context == NULL)
37*758e9fbaSOystein Eftevaag         exit (1);
38*758e9fbaSOystein Eftevaag 
39*758e9fbaSOystein Eftevaag     TPMS_CAPABILITY_DATA caps;
40*758e9fbaSOystein Eftevaag 
41*758e9fbaSOystein Eftevaag     rc = Tss2_Sys_GetCapability(sapi_context, NULL, TPM2_CAP_HANDLES,
42*758e9fbaSOystein Eftevaag                                 TPM2_HR_TRANSIENT,
43*758e9fbaSOystein Eftevaag                                 TAB_SIZE(caps.data.handles.handle), NULL,
44*758e9fbaSOystein Eftevaag                                 &caps, NULL);
45*758e9fbaSOystein Eftevaag     if (rc != TSS2_RC_SUCCESS) {
46*758e9fbaSOystein Eftevaag         LOG_ERROR("TPM GetCapabilities FAILED! Response Code : 0x%"PRIx32, rc);
47*758e9fbaSOystein Eftevaag         exit(1);
48*758e9fbaSOystein Eftevaag     }
49*758e9fbaSOystein Eftevaag 
50*758e9fbaSOystein Eftevaag 
51*758e9fbaSOystein Eftevaag     sapi_teardown_full (sapi_context);
52*758e9fbaSOystein Eftevaag 
53*758e9fbaSOystein Eftevaag     if (caps.data.handles.count) {
54*758e9fbaSOystein Eftevaag         LOG_ERROR("TPM contains transient entries");
55*758e9fbaSOystein Eftevaag         for (UINT32 i = 0; i < caps.data.handles.count; i++)
56*758e9fbaSOystein Eftevaag             LOG_ERROR("Handle %"PRIx32, caps.data.handles.handle[i]);
57*758e9fbaSOystein Eftevaag         return 1;
58*758e9fbaSOystein Eftevaag     }
59*758e9fbaSOystein Eftevaag 
60*758e9fbaSOystein Eftevaag     return 0;
61*758e9fbaSOystein Eftevaag }
62