blob: 5d8d1390558df3a1c82a939911571130c2ab1bbc [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SRC_MICROFUCHSIA_TEE_TEE_CLIENT_API_EXPERIMENTAL_INCLUDE_TEE_CLIENT_API_TEE_CLIENT_IMPL_H_
#define SRC_MICROFUCHSIA_TEE_TEE_CLIENT_API_EXPERIMENTAL_INCLUDE_TEE_CLIENT_API_TEE_CLIENT_IMPL_H_
#include <zircon/types.h>
/*
* TEE Client Implementation
*
* This file provides the Implementation specific structures necessary to complete the TEE
* Client API.
*
* Clients of the library should not rely on or modify the internal values of these structures.
*/
/* Maximum number of parameters that can be specified in an TEEC_Operation. */
#define TEEC_NUM_PARAMS_MAX 4
typedef struct teec_context_impl {
// This channel is usually invalid, when client is connecting via a service. This channel will
// be set when connecting directly to the driver.
zx_handle_t device_connector_channel;
// The UUID-keyed associative container that owns all of the open `fuchsia.tee.Application`
// channels.
void* uuid_to_channel;
} teec_context_impl_t;
typedef struct teec_session_impl {
uint32_t session_id;
// An unowned copy of the channel to `fuchsia.tee.Application` this session is attached to.
zx_handle_t application_channel;
} teec_session_impl_t;
typedef struct teec_shared_memory_impl {
zx_handle_t vmo;
zx_vaddr_t mapped_addr;
size_t mapped_size;
} teec_shared_memory_impl_t;
typedef struct teec_operation_impl {
/* This is just a placeholder so that the struct is not empty. */
char reserved;
} teec_operation_impl_t;
#endif // SRC_MICROFUCHSIA_TEE_TEE_CLIENT_API_EXPERIMENTAL_INCLUDE_TEE_CLIENT_API_TEE_CLIENT_IMPL_H_