// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Messages related to Client/Host Mutual Authentication and Local Login.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package remoting.protocol;

// Represents the data used in generating the client auth token during session
// initiation.
message ClientAuthToken {
  optional string host_full_jid = 1;
  optional string client_full_jid = 2;

  // A short-lived OAuth token identifying the client to the host.
  optional string client_oauth_token = 3;
}

// There can be more challenge types later
enum CredentialType {
  PASSWORD = 0;
}

message LocalLoginCredentials {
  optional CredentialType type = 1;
  optional string username = 2;
  optional bytes credential = 3;
}

message LocalLoginStatus {
  optional bool success = 1;

  // Only populated if success is set to false.
  optional int32 tries_remaining = 2 [default = 0];
  optional string error_info = 3;
}

// Sent from the Host to the Client.  This is the first message after
// channels are established.
message LocalLoginProperties {
  repeated CredentialType supported_credential_types = 1;

  // Used to generate the bank style anti-phishing image.
  // This info is stored only on the host.
  optional bytes antiphish_image = 2;
  optional bytes antiphish_text = 3;
}

// Sent from Client to Host.  This consists of both the login attempt,
// and any session configuration information.
message BeginSessionRequest {
  optional LocalLoginCredentials credentials = 1;
}

// Sent from Host to Client.  Replies with login success, and
// final client configuration.
message BeginSessionResponse {
  optional LocalLoginStatus login_status = 1;
}
