qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

tpm.json (3610B)


      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' }