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': 'defined(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': 'defined(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': 'defined(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': 'defined(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': 'defined(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': 'defined(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': 'defined(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': 'defined(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': 'defined(CONFIG_TPM)' } 166