fuchsia.tee

PROTOCOLS

Device

Defined in fuchsia.tee/tee.fidl

GetOsInfo

Obtains information about the TEE OS

Request

NameType

Response

NameType
info OsInfo

OpenSession

Initiates a communication session with the specified trusted application.

Request

NameType
trusted_app Uuid
parameter_set ParameterSet

Response

NameType
session_id uint32
op_result OpResult

InvokeCommand

Requests the trusted application perform the provided command. The command is unique to the trusted application.

Request

NameType
session_id uint32
command_id uint32
parameter_set ParameterSet

Response

NameType
op_result OpResult

CloseSession

Closes an established session.

Request

NameType
session_id uint32

Response

NameType

DeviceInfo

Defined in fuchsia.tee/tee.fidl

Provides information about the TEE device.

GetOsInfo

Obtains information about the TEE OS.

Request

NameType

Response

NameType
info OsInfo

Application

Defined in fuchsia.tee/tee.fidl

Represents a connection to an application running in the TEE.

GetOsInfo

Request

NameType

Response

NameType
info OsInfo

OpenSession

Request

NameType
trusted_app Uuid
parameter_set ParameterSet

Response

NameType
session_id uint32
op_result OpResult

OpenSession2

Initiates a communication session with the trusted application.

Request

NameType
parameter_set ParameterSet

Response

NameType
session_id uint32
op_result OpResult

InvokeCommand

Requests the trusted application perform the provided command. The command is unique to the trusted application.

Request

NameType
session_id uint32
command_id uint32
parameter_set ParameterSet

Response

NameType
op_result OpResult

CloseSession

Closes an established session.

Request

NameType
session_id uint32

Response

NameType

STRUCTS

Uuid

Defined in fuchsia.tee/tee.fidl

UUID identifiers are used to identify the TEE Operating System and individual Trusted Applications. This structure matches the UUID type as defined by RFC4122.

NameTypeDescriptionDefault
time_low uint32 No default
time_mid uint16 No default
time_hi_and_version uint16 No default
clock_seq_and_node uint8[8] No default

None

Defined in fuchsia.tee/tee.fidl

An empty parameter type is used as a placeholder for elements in the parameter set that are not used.

NameTypeDescriptionDefault

ENUMS

Direction

Type: uint32

Defined in fuchsia.tee/tee.fidl

Communication with the TEE OS and Trusted Applications is performed using opaque parameters. These parameters can be a mix of small values (Value type) or a buffer reference (Buffer type). A parameter will be tagged as either an input, output or both (inout).

NameValueDescription
INPUT 0
OUTPUT 1
INOUT 2

ReturnOrigin

Type: uint32

Defined in fuchsia.tee/tee.fidl

Each operation must flow through the device driver and the trusted operating system before reaching the trusted application (and back). The ReturnOrigin indicates which layer provided the return code.

NameValueDescription
COMMUNICATION 0
TRUSTED_OS 1
TRUSTED_APPLICATION 2

TABLES

OsRevision

Defined in fuchsia.tee/tee.fidl

OrdinalNameTypeDescription
1 major uint32
2 minor uint32

OsInfo

Defined in fuchsia.tee/tee.fidl

OrdinalNameTypeDescription
1 uuid Uuid
2 revision OsRevision
3 is_global_platform_compliant bool

Buffer

Defined in fuchsia.tee/tee.fidl

Represents a buffer parameter.

OrdinalNameTypeDescription
1 direction Direction
2 vmo handle<vmo>

The VMO is allowed to be not present for situations where the TEE allows for buffer size checks.

For example, if the operation to be performed needs an output buffer, but the user cannot calculate how large that output buffer should be, they can attempt the operation without a vmo and the Trusted Application will populate the size field so that the operation can be performed again with an appropriately sized buffer.

3 offset uint64
4 size uint64

Value

Defined in fuchsia.tee/tee.fidl

Represents a direct value parameter.

OrdinalNameTypeDescription
1 direction Direction
2 a uint64

This value is optional. If not set, a zero value is sent in its place if it is required by the calling convention.

3 b uint64

This value is optional. If not set, a zero value is sent in its place if it is required by the calling convention.

4 c uint64

This value is optional. If not set, a zero value is sent in its place if it is required by the calling convention.

OpResult

Defined in fuchsia.tee/tee.fidl

The result of an operation will include a return code, the origin of the result, and the return of the parameter set. The returned parameter set will be a copy of the input parameter set, but with the INOUT and OUTPUT parameters updated. If the parameter is a Buffer, it will update the Buffer.size to the number of bytes written.

OrdinalNameTypeDescription
1 return_code uint64
2 return_origin ReturnOrigin
3 parameter_set ParameterSet

XUNIONS

Parameter

Defined in fuchsia.tee/tee.fidl

NameTypeDescription
none None
buffer Buffer
value Value

CONSTANTS

NameValueTypeDescription
MAX_PARAMETERSET_COUNT 4 uint32

TYPE ALIASES

NameValueDescription
ParameterSet vector[MAX_PARAMETERSET_COUNT]