blob: d0a0f2790a0e9c0ba753bb79ab90eae06313525d [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
// Required in Chrome.
option optimize_for = LITE_RUNTIME;
package bound_session_credentials;
import "bound_session_params.proto";
// Debug information about previous failed rotation attempts. Attached to cookie
// rotation requests.
message RotationDebugInfo {
// Various transient error types that might have occurred during cookie
// rotation. See `TerminationReason` for persistent errors.
enum FailureType {
OTHER = 0;
CONNECTION_ERROR = 1;
SERVER_ERROR = 2;
TIMEOUT = 3;
}
// Persistent error type that may only be included in the last rotation
// request ping before terminating the session on the client. Delivery of the
// last ping request is not guaranteed.
enum TerminationReason {
TERMINATION_REASON_OTHER = 0;
ROTATION_PERSISTENT_ERROR = 1;
ROTATION_UNEXPECTED_RESPONSE = 2;
ROTATION_CHALLENGE_UNEXPECTED_FORMAT = 3;
ROTATION_CHALLENGE_LIMIT_EXCEEDED = 4;
ROTATION_SIGN_CHALLENGE_FAILED = 5;
ROTATION_UNKNOWN_ERROR = 6;
TERMINATION_HEADER_RECEIVED = 7;
SESSION_OVERRIDE = 8;
ROTATION_CHALLENGE_SESSION_ID_MISMATCH = 9;
}
// Contains how many times a specific type of error occurred.
message FailureCounter {
optional FailureType type = 1;
optional int32 count = 2;
}
// Contains information about one single failure.
message FailureInfo {
optional Timestamp failure_time = 1;
optional FailureType type = 2;
optional bool received_challenge = 3;
}
optional Timestamp request_time = 1;
repeated FailureCounter errors_since_last_rotation = 2;
optional FailureInfo first_failure_info = 3;
// Only populated if the session had already been terminated and the client
// reports its last status.
optional TerminationReason termination_reason = 4;
}