PROTOCOLS
Application
Defined in fuchsia.tee/tee.fidl
Represents a connection to an application running in the TEE.
CloseSession
Closes an established session.
Request
Name | Type |
---|---|
session_id |
uint32
|
Response
Name | Type |
---|
GetOsInfo
Request
Name | Type |
---|
Response
Name | Type |
---|---|
info |
OsInfo
|
InvokeCommand
Requests the trusted application perform the provided command. The command is unique to the trusted application.
Request
Name | Type |
---|---|
session_id |
uint32
|
command_id |
uint32
|
parameter_set |
ParameterSet
|
Response
Name | Type |
---|---|
op_result |
OpResult
|
OpenSession
Request
Name | Type |
---|---|
trusted_app |
Uuid
|
parameter_set |
ParameterSet
|
Response
Name | Type |
---|---|
session_id |
uint32
|
op_result |
OpResult
|
OpenSession2
Initiates a communication session with the trusted application.
Request
Name | Type |
---|---|
parameter_set |
ParameterSet
|
Response
Name | Type |
---|---|
session_id |
uint32
|
op_result |
OpResult
|
Device
Defined in fuchsia.tee/tee.fidl
CloseSession
Closes an established session.
Request
Name | Type |
---|---|
session_id |
uint32
|
Response
Name | Type |
---|
GetOsInfo
Obtains information about the TEE OS
Request
Name | Type |
---|
Response
Name | Type |
---|---|
info |
OsInfo
|
InvokeCommand
Requests the trusted application perform the provided command. The command is unique to the trusted application.
Request
Name | Type |
---|---|
session_id |
uint32
|
command_id |
uint32
|
parameter_set |
ParameterSet
|
Response
Name | Type |
---|---|
op_result |
OpResult
|
OpenSession
Initiates a communication session with the specified trusted application.
Request
Name | Type |
---|---|
trusted_app |
Uuid
|
parameter_set |
ParameterSet
|
Response
Name | Type |
---|---|
session_id |
uint32
|
op_result |
OpResult
|
DeviceInfo
Defined in fuchsia.tee/tee.fidl
Provides information about the TEE device.
GetOsInfo
Obtains information about the TEE OS.
Request
Name | Type |
---|
Response
Name | Type |
---|---|
info |
OsInfo
|
STRUCTS
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.
Name | Type | Description | Default |
---|
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.
Name | Type | Description | Default |
---|---|---|---|
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 |
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).
Name | Value | Description |
---|---|---|
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.
Name | Value | Description |
---|---|---|
COMMUNICATION |
0 |
|
TRUSTED_OS |
1 |
|
TRUSTED_APPLICATION |
2 |
TABLES
Buffer
Defined in fuchsia.tee/tee.fidl
Represents a buffer parameter.
Ordinal | Name | Type | Description |
---|---|---|---|
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
|
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.
Ordinal | Name | Type | Description |
---|---|---|---|
1 | return_code |
uint64
|
|
2 | return_origin |
ReturnOrigin
|
|
3 | parameter_set |
ParameterSet
|
OsInfo
Defined in fuchsia.tee/tee.fidl
Ordinal | Name | Type | Description |
---|---|---|---|
1 | uuid |
Uuid
|
|
2 | revision |
OsRevision
|
|
3 | is_global_platform_compliant |
bool
|
OsRevision
Defined in fuchsia.tee/tee.fidl
Ordinal | Name | Type | Description |
---|---|---|---|
1 | major |
uint32
|
|
2 | minor |
uint32
|
Value
Defined in fuchsia.tee/tee.fidl
Represents a direct value parameter.
Ordinal | Name | Type | Description |
---|---|---|---|
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. |
UNIONS
Parameter
Defined in fuchsia.tee/tee.fidl
Name | Type | Description |
---|---|---|
none |
None
|
|
buffer |
Buffer
|
|
value |
Value
|
CONSTANTS
Name | Value | Type | Description |
---|---|---|---|
MAX_PARAMETERSET_COUNT |
4
|
uint32 |
TYPE ALIASES
Name | Value | Description |
---|---|---|
ParameterSet |
vector [MAX_PARAMETERSET_COUNT ] |