syntax = "proto3";

package v2ray.core.transport.internet.xtls;
option csharp_namespace = "V2Ray.Core.Transport.Internet.Xtls";
option go_package = "v2ray.com/core/transport/internet/xtls";
option java_package = "com.v2ray.core.transport.internet.xtls";
option java_multiple_files = true;

message Certificate {
  // XTLS certificate in x509 format.
  bytes Certificate = 1;

  // XTLS key in x509 format.
  bytes Key = 2;

  enum Usage {
    ENCIPHERMENT = 0;
    AUTHORITY_VERIFY = 1;
    AUTHORITY_ISSUE = 2;
  }

  Usage usage = 3;
}

message Config {
  // Whether or not to allow self-signed certificates.
  bool allow_insecure = 1;

  // Whether or not to allow insecure cipher suites.
  bool allow_insecure_ciphers = 5;

  // List of certificates to be served on server.
  repeated Certificate certificate = 2;

  // Override server name.
  string server_name = 3;

  // Lists of string as ALPN values.
  repeated string next_protocol = 4;

  // Whether or not to disable session (ticket) resumption.
  bool disable_session_resumption = 6;

  // If true, root certificates on the system will not be loaded for
  // verification.
  bool disable_system_root = 7;
}
