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