xref: /openbmc/qemu/qapi/tpm.json (revision e6485190f77e6166cde8dc799e4e52e607b6f61d)
13859b6cfSMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
33859b6cfSMarkus Armbruster#
43859b6cfSMarkus Armbruster
53859b6cfSMarkus Armbruster##
63859b6cfSMarkus Armbruster# = TPM (trusted platform module) devices
73859b6cfSMarkus Armbruster##
83859b6cfSMarkus Armbruster
93859b6cfSMarkus Armbruster##
103859b6cfSMarkus Armbruster# @TpmModel:
113859b6cfSMarkus Armbruster#
123859b6cfSMarkus Armbruster# An enumeration of TPM models
133859b6cfSMarkus Armbruster#
143859b6cfSMarkus Armbruster# @tpm-tis: TPM TIS model
15a937b6aaSMarkus Armbruster#
164ab6cb4cSMarc-André Lureau# @tpm-crb: TPM CRB model (since 2.12)
17a937b6aaSMarkus Armbruster#
183676bc69SStefan Berger# @tpm-spapr: TPM SPAPR model (since 5.0)
193859b6cfSMarkus Armbruster#
203859b6cfSMarkus Armbruster# Since: 1.5
213859b6cfSMarkus Armbruster##
22caff255aSPhilippe Mathieu-Daudé{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
238a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
24caff255aSPhilippe Mathieu-Daudé
253859b6cfSMarkus Armbruster##
263859b6cfSMarkus Armbruster# @query-tpm-models:
273859b6cfSMarkus Armbruster#
283859b6cfSMarkus Armbruster# Return a list of supported TPM models
293859b6cfSMarkus Armbruster#
303859b6cfSMarkus Armbruster# Returns: a list of TpmModel
313859b6cfSMarkus Armbruster#
323859b6cfSMarkus Armbruster# Since: 1.5
333859b6cfSMarkus Armbruster#
34*14b48aaaSJohn Snow# .. qmp-example::
353859b6cfSMarkus Armbruster#
363859b6cfSMarkus Armbruster#     -> { "execute": "query-tpm-models" }
373676bc69SStefan Berger#     <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
383859b6cfSMarkus Armbruster##
39caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm-models', 'returns': ['TpmModel'],
408a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
413859b6cfSMarkus Armbruster
423859b6cfSMarkus Armbruster##
433859b6cfSMarkus Armbruster# @TpmType:
443859b6cfSMarkus Armbruster#
453859b6cfSMarkus Armbruster# An enumeration of TPM types
463859b6cfSMarkus Armbruster#
473859b6cfSMarkus Armbruster# @passthrough: TPM passthrough type
48a937b6aaSMarkus Armbruster#
4994546de1SMarkus Armbruster# @emulator: Software Emulator TPM type (since 2.11)
503859b6cfSMarkus Armbruster#
513859b6cfSMarkus Armbruster# Since: 1.5
523859b6cfSMarkus Armbruster##
53caff255aSPhilippe Mathieu-Daudé{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
548a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
553859b6cfSMarkus Armbruster
563859b6cfSMarkus Armbruster##
573859b6cfSMarkus Armbruster# @query-tpm-types:
583859b6cfSMarkus Armbruster#
593859b6cfSMarkus Armbruster# Return a list of supported TPM types
603859b6cfSMarkus Armbruster#
613859b6cfSMarkus Armbruster# Returns: a list of TpmType
623859b6cfSMarkus Armbruster#
633859b6cfSMarkus Armbruster# Since: 1.5
643859b6cfSMarkus Armbruster#
65*14b48aaaSJohn Snow# .. qmp-example::
663859b6cfSMarkus Armbruster#
673859b6cfSMarkus Armbruster#     -> { "execute": "query-tpm-types" }
68f4ede81eSAmarnath Valluri#     <- { "return": [ "passthrough", "emulator" ] }
693859b6cfSMarkus Armbruster##
70caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm-types', 'returns': ['TpmType'],
718a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
723859b6cfSMarkus Armbruster
733859b6cfSMarkus Armbruster##
743859b6cfSMarkus Armbruster# @TPMPassthroughOptions:
753859b6cfSMarkus Armbruster#
763859b6cfSMarkus Armbruster# Information about the TPM passthrough type
773859b6cfSMarkus Armbruster#
783859b6cfSMarkus Armbruster# @path: string describing the path used for accessing the TPM device
793859b6cfSMarkus Armbruster#
80a937b6aaSMarkus Armbruster# @cancel-path: string showing the TPM's sysfs cancel file for
81a937b6aaSMarkus Armbruster#     cancellation of TPM commands while they are executing
823859b6cfSMarkus Armbruster#
833859b6cfSMarkus Armbruster# Since: 1.5
843859b6cfSMarkus Armbruster##
85b0ddeba2SMarc-André Lureau{ 'struct': 'TPMPassthroughOptions',
86b0ddeba2SMarc-André Lureau  'data': { '*path': 'str',
87caff255aSPhilippe Mathieu-Daudé            '*cancel-path': 'str' },
888a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
893859b6cfSMarkus Armbruster
903859b6cfSMarkus Armbruster##
91f4ede81eSAmarnath Valluri# @TPMEmulatorOptions:
92f4ede81eSAmarnath Valluri#
93f4ede81eSAmarnath Valluri# Information about the TPM emulator type
94f4ede81eSAmarnath Valluri#
95f4ede81eSAmarnath Valluri# @chardev: Name of a unix socket chardev
96f4ede81eSAmarnath Valluri#
97f4ede81eSAmarnath Valluri# Since: 2.11
98f4ede81eSAmarnath Valluri##
99caff255aSPhilippe Mathieu-Daudé{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
1008a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
101f4ede81eSAmarnath Valluri
102f4ede81eSAmarnath Valluri##
10339dc3e4aSMarkus Armbruster# @TPMPassthroughOptionsWrapper:
10439dc3e4aSMarkus Armbruster#
1052fecccbcSMarkus Armbruster# @data: Information about the TPM passthrough type
1062fecccbcSMarkus Armbruster#
10739dc3e4aSMarkus Armbruster# Since: 1.5
10839dc3e4aSMarkus Armbruster##
10939dc3e4aSMarkus Armbruster{ 'struct': 'TPMPassthroughOptionsWrapper',
11039dc3e4aSMarkus Armbruster  'data': { 'data': 'TPMPassthroughOptions' },
11139dc3e4aSMarkus Armbruster  'if': 'CONFIG_TPM' }
11239dc3e4aSMarkus Armbruster
11339dc3e4aSMarkus Armbruster##
11439dc3e4aSMarkus Armbruster# @TPMEmulatorOptionsWrapper:
11539dc3e4aSMarkus Armbruster#
1162fecccbcSMarkus Armbruster# @data: Information about the TPM emulator type
1172fecccbcSMarkus Armbruster#
11839dc3e4aSMarkus Armbruster# Since: 2.11
11939dc3e4aSMarkus Armbruster##
12039dc3e4aSMarkus Armbruster{ 'struct': 'TPMEmulatorOptionsWrapper',
12139dc3e4aSMarkus Armbruster  'data': { 'data': 'TPMEmulatorOptions' },
12239dc3e4aSMarkus Armbruster  'if': 'CONFIG_TPM' }
12339dc3e4aSMarkus Armbruster
12439dc3e4aSMarkus Armbruster##
1253859b6cfSMarkus Armbruster# @TpmTypeOptions:
1263859b6cfSMarkus Armbruster#
127a937b6aaSMarkus Armbruster# A union referencing different TPM backend types' configuration
128a937b6aaSMarkus Armbruster# options
1293859b6cfSMarkus Armbruster#
130a937b6aaSMarkus Armbruster# @type:
131a937b6aaSMarkus Armbruster#     - 'passthrough' The configuration options for the TPM
132a937b6aaSMarkus Armbruster#       passthrough type
133a937b6aaSMarkus Armbruster#     - 'emulator' The configuration options for TPM emulator backend
134a937b6aaSMarkus Armbruster#       type
1353859b6cfSMarkus Armbruster#
1363859b6cfSMarkus Armbruster# Since: 1.5
1373859b6cfSMarkus Armbruster##
1383859b6cfSMarkus Armbruster{ 'union': 'TpmTypeOptions',
13939dc3e4aSMarkus Armbruster  'base': { 'type': 'TpmType' },
14039dc3e4aSMarkus Armbruster  'discriminator': 'type',
14139dc3e4aSMarkus Armbruster  'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper',
14239dc3e4aSMarkus Armbruster            'emulator': 'TPMEmulatorOptionsWrapper' },
1438a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
1443859b6cfSMarkus Armbruster
1453859b6cfSMarkus Armbruster##
1463859b6cfSMarkus Armbruster# @TPMInfo:
1473859b6cfSMarkus Armbruster#
1483859b6cfSMarkus Armbruster# Information about the TPM
1493859b6cfSMarkus Armbruster#
1503859b6cfSMarkus Armbruster# @id: The Id of the TPM
1513859b6cfSMarkus Armbruster#
1523859b6cfSMarkus Armbruster# @model: The TPM frontend model
1533859b6cfSMarkus Armbruster#
1543859b6cfSMarkus Armbruster# @options: The TPM (backend) type configuration options
1553859b6cfSMarkus Armbruster#
1563859b6cfSMarkus Armbruster# Since: 1.5
1573859b6cfSMarkus Armbruster##
1583859b6cfSMarkus Armbruster{ 'struct': 'TPMInfo',
1593859b6cfSMarkus Armbruster  'data': {'id': 'str',
1603859b6cfSMarkus Armbruster           'model': 'TpmModel',
161caff255aSPhilippe Mathieu-Daudé           'options': 'TpmTypeOptions' },
1628a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
1633859b6cfSMarkus Armbruster
1643859b6cfSMarkus Armbruster##
1653859b6cfSMarkus Armbruster# @query-tpm:
1663859b6cfSMarkus Armbruster#
1673859b6cfSMarkus Armbruster# Return information about the TPM device
1683859b6cfSMarkus Armbruster#
1693859b6cfSMarkus Armbruster# Since: 1.5
1703859b6cfSMarkus Armbruster#
171*14b48aaaSJohn Snow# .. qmp-example::
1723859b6cfSMarkus Armbruster#
1733859b6cfSMarkus Armbruster#     -> { "execute": "query-tpm" }
1743859b6cfSMarkus Armbruster#     <- { "return":
1753859b6cfSMarkus Armbruster#          [
1763859b6cfSMarkus Armbruster#            { "model": "tpm-tis",
1773859b6cfSMarkus Armbruster#              "options":
1783859b6cfSMarkus Armbruster#                { "type": "passthrough",
1793859b6cfSMarkus Armbruster#                  "data":
1803859b6cfSMarkus Armbruster#                    { "cancel-path": "/sys/class/misc/tpm0/device/cancel",
1813859b6cfSMarkus Armbruster#                      "path": "/dev/tpm0"
1823859b6cfSMarkus Armbruster#                    }
1833859b6cfSMarkus Armbruster#                },
1843859b6cfSMarkus Armbruster#              "id": "tpm0"
1853859b6cfSMarkus Armbruster#            }
1863859b6cfSMarkus Armbruster#          ]
1873859b6cfSMarkus Armbruster#        }
1883859b6cfSMarkus Armbruster##
189caff255aSPhilippe Mathieu-Daudé{ 'command': 'query-tpm', 'returns': ['TPMInfo'],
1908a9f1e1dSMarc-André Lureau  'if': 'CONFIG_TPM' }
191