// Copyright (C) 2020 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Note that if you add/remove methods in this file you must update // the metrics sql as well ./android/scripts/gen-grpc-sql.py // // Please group deleted methods in a block including the date (MM/DD/YY) // it was removed. This enables us to easily keep metrics around after removal // // List of deleted methods // rpc iWasDeleted (03/12/12) // ... syntax = "proto3"; option java_multiple_files = true; option java_package = "com.android.emulator.control"; option objc_class_prefix = "AEC"; package android.emulation.control; import "google/protobuf/empty.proto"; // The ADB service enables you to interact with the running Adb service inside // the emulator. This service is usually not available as it has the ability to // retrieve the private adb key from the running image and make adb accessible // if and only if: // // 1. The private key is available to the running emulator. // 2. The public key corresponding the private key is embedded in the encrypted // partition. // // This service is usually *ONLY* available to containerized emulators that are // running with mutual authentication on the gRPC endpoint (that is SSL is // enabled and a valid client certificate is required.). service Adb { // Pulls the private key that the emulator uses to communicate with the // emulator. This private key should be made accessible to adb when you wish // to establish a connection to this emulator. // // The following gRPC error codes can be returned: // - unimplemented (code 14) if the AdbService is not availab.e // - aborted (code 10) if: // - The private key file cannot be found. // - The private key file cannot be read. rpc pullAdbKey(google.protobuf.Empty) returns(AdbKey); // Forwards the incoming bytes to the running adb deamon. rpc forwardAdb(AdbPacket) returns(AdbPacket); } message AdbKey { // The private key used to derive the public key that is embedded in the // emulator. This private key must be made available to ADB in order to // establish a connection to the emulator *without* requiring interaction. // // The private key must be made available to adb. This can be done // by: // // - Saving it as a file and adding it to the $ADB_VENDOR_KEYS enviroment // variable and restarting adb. // // or // // - Saving it the existing $ADB_VENDOR_KEYS search path used by adb. string private_key = 1; }; message AdbPacket { // Payload that needs to be forwarded. bytes payload = 1; // status fields. bool success = 2; string err = 3; };