blob: 6dbe1081766d4ce0d1ed3130d90b6c0276240dbb [file] [log] [blame]
// Copyright 2020 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.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package system_proxy;
// TODO(acostinas, crbug.com/1076377) Deprecated, to be removed. Please use
// SetAuthenticationDetailsRequest.
message SetSystemTrafficCredentialsRequest {
// The username for authenticating system services to the remote web proxy.
optional string system_services_username = 1;
// The password for authenticating system services to the remote web proxy.
optional string system_services_password = 2;
}
// TODO(acostinas, crbug.com/1076377) Deprecated, to be removed. Please use
// SetAuthenticationDetailsResponse.
message SetSystemTrafficCredentialsResponse {
// Error message, empty if no error occurred.
optional string error_message = 1;
}
// Both |username| and |password| use UTF-8 as character encoding and are not
// percent-escaped (i.e. not URL encoded).
message Credentials {
// The username for authenticating to the remote web proxy.
optional string username = 1;
// The password for authenticating to the remote web proxy.
optional string password = 2;
// Authentication schemes for which policy set credentials can be
// automatically applied. Valid values are 'basic', 'digest' and 'ntlm'.
repeated string policy_credentials_auth_schemes = 3;
}
// The protection space determines the domain over which credentials can
// be automatically applied (defined in RFC7235 , section 2.2).
message ProtectionSpace {
// The origin of the URL of the web proxy server issuing
// the challenge, formatted as scheme://url:port.
optional string origin = 1;
// The case-sensitive realm string of the challenge.
optional string realm = 2;
// The authentication scheme that can be basic, digest or NTLM.
optional string scheme = 3;
}
// A System-proxy worker instance forwards traffic originating from either
// system services only, or user only via ARC and Crostini connections.
enum TrafficOrigin {
// Should not be used.
UNSPECIFIED = 0;
SYSTEM = 1;
USER = 2;
ALL = 3;
}
// Message request to remove the user credentials from the System-proxy service.
message ClearUserCredentialsRequest {}
message ClearUserCredentialsResponse {
// Error message, empty if no error occurred.
optional string error_message = 1;
}
message SetAuthenticationDetailsRequest {
// Indicates if the credentials should be used for system or user traffic.
optional TrafficOrigin traffic_type = 1;
// Indicates if Kerberos authentication is allowed on Chrome OS. If yes and
// the proxy server supports Kerberos, this is the first method tried by
// libcurl when authenticating, with fallback on less secure methods in case
// of failure.
optional bool kerberos_enabled = 2;
// The credentials to authenticate with the remote proxy server.
optional Credentials credentials = 3;
// The domain for which the credentials can be applied without asking again
// for authentication.
optional ProtectionSpace protection_space = 4;
// Used by System-proxy to request the ticket cache and configuration files
// with kerberosd.
optional string active_principal_name = 5;
}
message SetAuthenticationDetailsResponse {
// Error message, empty if no error occurred.
optional string error_message = 1;
}
message ShutDownRequest {
// Indicates which worker process should be shut down. If |ALL| are selected,
// it will shut down the service.
optional TrafficOrigin traffic_type = 1;
}
message ShutDownResponse {
// Error message, empty if no error occurred.
optional string error_message = 1;
}
// Connection details sent along with the WorkerActiveSignal which indicates
// what type of traffic is being forwarded and the proxy url to connect to.
// Chrome will use this information to forward the local proxy address either to
// system services (through the proxy resolution service) or to ARC.
message WorkerActiveSignalDetails {
// Indicates if the worker is authenticathing system or user traffic.
optional TrafficOrigin traffic_origin = 1;
// The local proxy address formatted as host:port. The proxy will be forwarded
// to system services as a PAC-style string and to ARC++ in scheme://host:port
// format.
optional string local_proxy_url = 2;
}
// Message sent with the AuthenticationRequiredSignal. Contains information to
// search credentials in Chrome's http auth credential cache. After receiving
// this signal, Chrome is expected to call |SetAuthenticationDetails| with the
// missing credentials.
message AuthenticationRequiredDetails {
optional ProtectionSpace proxy_protection_space = 1;
// If true, it means that the credentials previously acquired for proxy
// authentication are incorrect and the user will be prompted to introduce new
// proxy credentials. If new credentials are set in the authentication
// dialogue, they are forwarded to System-proxy via the
// |SetAuthenticationDetails| D-Bus call and will overwrite the existing
// cached credentials associated with |proxy_protection_space|, otherwise the
// existing incorrect credentials are not cleared from the cache.
optional bool bad_cached_credentials = 2;
}
// Message sent with the `GenerateNetworkAuthMessage` method.
message GenerateNetworkAuthMessageRequest {
optional NtlmAuthMessageRequest ntlm_message_auth_request = 1;
}
message GenerateNetworkAuthMessageResponse {
// The network authentication message. If the method fails `auth_message` will
// be empty.
optional bytes auth_message = 1;
optional string error_message = 2;
}
// These fields must be kept in sync with the chromium
// net::ntlm::NtlmClient::GenerateAuthenticateMessage() method args.
message NtlmAuthMessageRequest {
// Flag which indicates if the generated NTLM authentication message is
// NTLMv2.
optional bool ntlmv2_enabled = 1;
// Enables Message Integrity Check (MIC). This flag is ignored if
// `ntlmv2_enabled` is false.
optional bool mic_enabled = 2;
// Enables Extended Protection for Authentication (EPA). This flag is
// ignored if `ntlmv2_enabled` is false.
optional bool epa_enabled = 3;
// UTF-8 encoding of the domain name.
optional string domain = 4;
// Uppercase UTF-8 encoding of the username. Note that the NTLM hash will be
// generated using locale insensitive conversion rules.
optional string username = 5;
optional string hostname = 6;
optional string channel_bindings = 7;
optional string spn = 8;
optional uint64 client_time = 9;
// 8 bytes randomly generated by the client. This will be used by the server
// to compute the expected response.
optional bytes client_challenge = 10;
optional bytes server_challenge_message = 11;
}