# RPC

This directory contains TLS configuration over an attested TLS connection, providing trusted channels to send and handle requests.

Re-export Tonic to support the general gRPC framework. Tonic is a gRPC over HTTP/2 implementation focused on high performance, interoperability, and flexibility.

# Channel and Client

A channel in gRPC represents a connection to the target service. Clients can use the channel to send requests. When constructing a client, you can use the SgxTrustedTlsClientConfig to set up TLS and attestation configurations so that we can establish and attest to a remote connection. For example, to connect the management service, you need to establish a trusted channel with the service first. Then, create a client for the management service with the channel. At last, you can use this client to send requests like InvokeTask.

# Server and Service

A server is an entity that listens to a network address, processes incoming messages, and forwards requests to certain services. Similar to the client, you can use SgxTrustedTlsServerConfig to set up TLS and attestation configurations for the channel with clients.

# Interceptor

In Teaclave, we implement CredentialService based on the Interceptor trait to add a credential to the MetadataMap of each request before it is sent, so servers can check the authentication credential of each request.

Last Updated: 5/9/2023, 9:52:42 PM