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