/*
 * Copyright (C) 2021 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.
 */

syntax = "proto3";

package android.microdroid;

// Metadata is the body of the "metadata" partition
message Metadata {
  uint32 version = 1;

  repeated ApexPayload apexes = 2;

  ApkPayload apk = 3;

  string payload_config_path = 4;
}

message ApexPayload {
  // Required.
  string name = 1;
  string partition_name = 2;

  // Optional.
  // When specified, apex payload should be verified with the public key and root digest.
  bytes public_key = 3;
  bytes root_digest = 4;
}

message ApkPayload {
  // Required.
  // The name of APK.
  string name = 1;

  string payload_partition_name = 2;

  string idsig_partition_name = 3;
}
