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