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# @TPMPassthroughOptionsWrapper: 104# 105# Since: 1.5 106## 107{ 'struct': 'TPMPassthroughOptionsWrapper', 108 'data': { 'data': 'TPMPassthroughOptions' }, 109 'if': 'CONFIG_TPM' } 110 111## 112# @TPMEmulatorOptionsWrapper: 113# 114# Since: 2.11 115## 116{ 'struct': 'TPMEmulatorOptionsWrapper', 117 'data': { 'data': 'TPMEmulatorOptions' }, 118 'if': 'CONFIG_TPM' } 119 120## 121# @TpmTypeOptions: 122# 123# A union referencing different TPM backend types' configuration options 124# 125# @type: - 'passthrough' The configuration options for the TPM passthrough type 126# - 'emulator' The configuration options for TPM emulator backend type 127# 128# Since: 1.5 129## 130{ 'union': 'TpmTypeOptions', 131 'base': { 'type': 'TpmType' }, 132 'discriminator': 'type', 133 'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper', 134 'emulator': 'TPMEmulatorOptionsWrapper' }, 135 'if': 'CONFIG_TPM' } 136 137## 138# @TPMInfo: 139# 140# Information about the TPM 141# 142# @id: The Id of the TPM 143# 144# @model: The TPM frontend model 145# 146# @options: The TPM (backend) type configuration options 147# 148# Since: 1.5 149## 150{ 'struct': 'TPMInfo', 151 'data': {'id': 'str', 152 'model': 'TpmModel', 153 'options': 'TpmTypeOptions' }, 154 'if': 'CONFIG_TPM' } 155 156## 157# @query-tpm: 158# 159# Return information about the TPM device 160# 161# Returns: @TPMInfo on success 162# 163# Since: 1.5 164# 165# Example: 166# 167# -> { "execute": "query-tpm" } 168# <- { "return": 169# [ 170# { "model": "tpm-tis", 171# "options": 172# { "type": "passthrough", 173# "data": 174# { "cancel-path": "/sys/class/misc/tpm0/device/cancel", 175# "path": "/dev/tpm0" 176# } 177# }, 178# "id": "tpm0" 179# } 180# ] 181# } 182# 183## 184{ 'command': 'query-tpm', 'returns': ['TPMInfo'], 185 'if': 'CONFIG_TPM' } 186