xref: /openbmc/qemu/qapi/tpm.json (revision ccb23709)
1# -*- Mode: Python -*-
2#
3
4##
5# = TPM (trusted platform module) devices
6##
7
8##
9# @TpmModel:
10#
11# An enumeration of TPM models
12#
13# @tpm-tis: TPM TIS model
14# @tpm-crb: TPM CRB model (since 2.12)
15# @tpm-spapr: TPM SPAPR model (since 5.0)
16#
17# Since: 1.5
18##
19{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ] }
20##
21# @query-tpm-models:
22#
23# Return a list of supported TPM models
24#
25# Returns: a list of TpmModel
26#
27# Since: 1.5
28#
29# Example:
30#
31# -> { "execute": "query-tpm-models" }
32# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
33#
34##
35{ 'command': 'query-tpm-models', 'returns': ['TpmModel'] }
36
37##
38# @TpmType:
39#
40# An enumeration of TPM types
41#
42# @passthrough: TPM passthrough type
43# @emulator: Software Emulator TPM type
44#            Since: 2.11
45#
46# Since: 1.5
47##
48{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ] }
49
50##
51# @query-tpm-types:
52#
53# Return a list of supported TPM types
54#
55# Returns: a list of TpmType
56#
57# Since: 1.5
58#
59# Example:
60#
61# -> { "execute": "query-tpm-types" }
62# <- { "return": [ "passthrough", "emulator" ] }
63#
64##
65{ 'command': 'query-tpm-types', 'returns': ['TpmType'] }
66
67##
68# @TPMPassthroughOptions:
69#
70# Information about the TPM passthrough type
71#
72# @path: string describing the path used for accessing the TPM device
73#
74# @cancel-path: string showing the TPM's sysfs cancel file
75#               for cancellation of TPM commands while they are executing
76#
77# Since: 1.5
78##
79{ 'struct': 'TPMPassthroughOptions',
80  'data': { '*path': 'str',
81            '*cancel-path': 'str' } }
82
83##
84# @TPMEmulatorOptions:
85#
86# Information about the TPM emulator type
87#
88# @chardev: Name of a unix socket chardev
89#
90# Since: 2.11
91##
92{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' } }
93
94##
95# @TpmTypeOptions:
96#
97# A union referencing different TPM backend types' configuration options
98#
99# @type: - 'passthrough' The configuration options for the TPM passthrough type
100#        - 'emulator' The configuration options for TPM emulator backend type
101#
102# Since: 1.5
103##
104{ 'union': 'TpmTypeOptions',
105   'data': { 'passthrough' : 'TPMPassthroughOptions',
106             'emulator': 'TPMEmulatorOptions' } }
107
108##
109# @TPMInfo:
110#
111# Information about the TPM
112#
113# @id: The Id of the TPM
114#
115# @model: The TPM frontend model
116#
117# @options: The TPM (backend) type configuration options
118#
119# Since: 1.5
120##
121{ 'struct': 'TPMInfo',
122  'data': {'id': 'str',
123           'model': 'TpmModel',
124           'options': 'TpmTypeOptions' } }
125
126##
127# @query-tpm:
128#
129# Return information about the TPM device
130#
131# Returns: @TPMInfo on success
132#
133# Since: 1.5
134#
135# Example:
136#
137# -> { "execute": "query-tpm" }
138# <- { "return":
139#      [
140#        { "model": "tpm-tis",
141#          "options":
142#            { "type": "passthrough",
143#              "data":
144#                { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
145#                  "path": "/dev/tpm0"
146#                }
147#            },
148#          "id": "tpm0"
149#        }
150#      ]
151#    }
152#
153##
154{ 'command': 'query-tpm', 'returns': ['TPMInfo'] }
155