blob: 779037d557356b2da0d53202bad20d6f3a48ed95 [file] [log] [blame]
// Copyright 2014 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.
// Messages for Primary <-> Replica auth DB replication protocol.
// Used from both Primary side (i.e. auth_service) and Replica side (any service
// that uses auth component).
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.25.0-devel
// protoc v3.12.1
// source: components/auth/proto/replication.proto
package protocol
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// Status codes.
type ServiceLinkResponse_Status int32
const (
// The service is now linked and primary will be pushing updates to it.
ServiceLinkResponse_SUCCESS ServiceLinkResponse_Status = 0
// Primary do not replies.
ServiceLinkResponse_TRANSPORT_ERROR ServiceLinkResponse_Status = 1
// Linking ticket is invalid or expired.
ServiceLinkResponse_BAD_TICKET ServiceLinkResponse_Status = 2
// Linking ticket was generated for another app, not the calling one.
ServiceLinkResponse_AUTH_ERROR ServiceLinkResponse_Status = 3
)
// Enum value maps for ServiceLinkResponse_Status.
var (
ServiceLinkResponse_Status_name = map[int32]string{
0: "SUCCESS",
1: "TRANSPORT_ERROR",
2: "BAD_TICKET",
3: "AUTH_ERROR",
}
ServiceLinkResponse_Status_value = map[string]int32{
"SUCCESS": 0,
"TRANSPORT_ERROR": 1,
"BAD_TICKET": 2,
"AUTH_ERROR": 3,
}
)
func (x ServiceLinkResponse_Status) Enum() *ServiceLinkResponse_Status {
p := new(ServiceLinkResponse_Status)
*p = x
return p
}
func (x ServiceLinkResponse_Status) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ServiceLinkResponse_Status) Descriptor() protoreflect.EnumDescriptor {
return file_components_auth_proto_replication_proto_enumTypes[0].Descriptor()
}
func (ServiceLinkResponse_Status) Type() protoreflect.EnumType {
return &file_components_auth_proto_replication_proto_enumTypes[0]
}
func (x ServiceLinkResponse_Status) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ServiceLinkResponse_Status.Descriptor instead.
func (ServiceLinkResponse_Status) EnumDescriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{2, 0}
}
// Overall status of the operation.
type ReplicationPushResponse_Status int32
const (
// Replica accepted the push request and updated its copy of auth db.
ReplicationPushResponse_APPLIED ReplicationPushResponse_Status = 0
// Replica has a newer version of AuthDB, the push request is skipped.
ReplicationPushResponse_SKIPPED ReplicationPushResponse_Status = 1
// Non fatal error happened, the push request may be retried.
ReplicationPushResponse_TRANSIENT_ERROR ReplicationPushResponse_Status = 2
// Fatal error happened, the push request must not be retried.
ReplicationPushResponse_FATAL_ERROR ReplicationPushResponse_Status = 3
)
// Enum value maps for ReplicationPushResponse_Status.
var (
ReplicationPushResponse_Status_name = map[int32]string{
0: "APPLIED",
1: "SKIPPED",
2: "TRANSIENT_ERROR",
3: "FATAL_ERROR",
}
ReplicationPushResponse_Status_value = map[string]int32{
"APPLIED": 0,
"SKIPPED": 1,
"TRANSIENT_ERROR": 2,
"FATAL_ERROR": 3,
}
)
func (x ReplicationPushResponse_Status) Enum() *ReplicationPushResponse_Status {
p := new(ReplicationPushResponse_Status)
*p = x
return p
}
func (x ReplicationPushResponse_Status) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ReplicationPushResponse_Status) Descriptor() protoreflect.EnumDescriptor {
return file_components_auth_proto_replication_proto_enumTypes[1].Descriptor()
}
func (ReplicationPushResponse_Status) Type() protoreflect.EnumType {
return &file_components_auth_proto_replication_proto_enumTypes[1]
}
func (x ReplicationPushResponse_Status) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ReplicationPushResponse_Status.Descriptor instead.
func (ReplicationPushResponse_Status) EnumDescriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{11, 0}
}
// Error codes, for TRANSIENT_ERROR and FATAL_ERROR statuses.
type ReplicationPushResponse_ErrorCode int32
const (
// Some unrecognized error.
ReplicationPushResponse_ERROR_UNKNOWN ReplicationPushResponse_ErrorCode = 0
// Trying to push an update to service that is not a replica.
ReplicationPushResponse_NOT_A_REPLICA ReplicationPushResponse_ErrorCode = 1
// Replica doesn't know about the service that pushing the update.
ReplicationPushResponse_FORBIDDEN ReplicationPushResponse_ErrorCode = 2
// Signature headers are missing.
ReplicationPushResponse_MISSING_SIGNATURE ReplicationPushResponse_ErrorCode = 3
// Signature is not valid.
ReplicationPushResponse_BAD_SIGNATURE ReplicationPushResponse_ErrorCode = 4
// Format of the request is not valid.
ReplicationPushResponse_BAD_REQUEST ReplicationPushResponse_ErrorCode = 5
)
// Enum value maps for ReplicationPushResponse_ErrorCode.
var (
ReplicationPushResponse_ErrorCode_name = map[int32]string{
0: "ERROR_UNKNOWN",
1: "NOT_A_REPLICA",
2: "FORBIDDEN",
3: "MISSING_SIGNATURE",
4: "BAD_SIGNATURE",
5: "BAD_REQUEST",
}
ReplicationPushResponse_ErrorCode_value = map[string]int32{
"ERROR_UNKNOWN": 0,
"NOT_A_REPLICA": 1,
"FORBIDDEN": 2,
"MISSING_SIGNATURE": 3,
"BAD_SIGNATURE": 4,
"BAD_REQUEST": 5,
}
)
func (x ReplicationPushResponse_ErrorCode) Enum() *ReplicationPushResponse_ErrorCode {
p := new(ReplicationPushResponse_ErrorCode)
*p = x
return p
}
func (x ReplicationPushResponse_ErrorCode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ReplicationPushResponse_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
return file_components_auth_proto_replication_proto_enumTypes[2].Descriptor()
}
func (ReplicationPushResponse_ErrorCode) Type() protoreflect.EnumType {
return &file_components_auth_proto_replication_proto_enumTypes[2]
}
func (x ReplicationPushResponse_ErrorCode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ReplicationPushResponse_ErrorCode.Descriptor instead.
func (ReplicationPushResponse_ErrorCode) EnumDescriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{11, 1}
}
// Generated by Primary, passed to Replica to initiate linking process.
type ServiceLinkTicket struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// GAE application ID of Primary that generated this ticket. Replica will send
// ServiceLinkRequest to this service when it processes the ticket.
PrimaryId string `protobuf:"bytes,1,opt,name=primary_id,json=primaryId,proto3" json:"primary_id,omitempty"`
// URL to the root page of a primary service, i.e. https://<...>.appspot.com.
// Useful when testing on dev appserver and on non-default version.
PrimaryUrl string `protobuf:"bytes,2,opt,name=primary_url,json=primaryUrl,proto3" json:"primary_url,omitempty"`
// Identity of a user that generated this ticket.
GeneratedBy string `protobuf:"bytes,3,opt,name=generated_by,json=generatedBy,proto3" json:"generated_by,omitempty"`
// Opaque blob passed back to Primary in ServiceLinkRequest. Its exact
// structure is an implementation detail of Primary. It contains app_id of
// a replica this ticket is intended for, timestamp and HMAC tag.
Ticket []byte `protobuf:"bytes,4,opt,name=ticket,proto3" json:"ticket,omitempty"`
}
func (x *ServiceLinkTicket) Reset() {
*x = ServiceLinkTicket{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServiceLinkTicket) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceLinkTicket) ProtoMessage() {}
func (x *ServiceLinkTicket) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ServiceLinkTicket.ProtoReflect.Descriptor instead.
func (*ServiceLinkTicket) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{0}
}
func (x *ServiceLinkTicket) GetPrimaryId() string {
if x != nil {
return x.PrimaryId
}
return ""
}
func (x *ServiceLinkTicket) GetPrimaryUrl() string {
if x != nil {
return x.PrimaryUrl
}
return ""
}
func (x *ServiceLinkTicket) GetGeneratedBy() string {
if x != nil {
return x.GeneratedBy
}
return ""
}
func (x *ServiceLinkTicket) GetTicket() []byte {
if x != nil {
return x.Ticket
}
return nil
}
// Sent from Replica to Primary via direct service <-> service HTTP call,
// replicas app_id would be available via X-Appengine-Inbound-Appid header.
type ServiceLinkRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Same ticket that was passed to Replica via ServiceLinkTicket.
Ticket []byte `protobuf:"bytes,1,opt,name=ticket,proto3" json:"ticket,omitempty"`
// URL to use when making requests to Replica from Primary.
ReplicaUrl string `protobuf:"bytes,2,opt,name=replica_url,json=replicaUrl,proto3" json:"replica_url,omitempty"`
// Identity of a user that accepted the ticket and initiated this request.
InitiatedBy string `protobuf:"bytes,3,opt,name=initiated_by,json=initiatedBy,proto3" json:"initiated_by,omitempty"`
}
func (x *ServiceLinkRequest) Reset() {
*x = ServiceLinkRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServiceLinkRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceLinkRequest) ProtoMessage() {}
func (x *ServiceLinkRequest) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ServiceLinkRequest.ProtoReflect.Descriptor instead.
func (*ServiceLinkRequest) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{1}
}
func (x *ServiceLinkRequest) GetTicket() []byte {
if x != nil {
return x.Ticket
}
return nil
}
func (x *ServiceLinkRequest) GetReplicaUrl() string {
if x != nil {
return x.ReplicaUrl
}
return ""
}
func (x *ServiceLinkRequest) GetInitiatedBy() string {
if x != nil {
return x.InitiatedBy
}
return ""
}
// Primary's response to ServiceLinkRequest. Always returned with HTTP code 200.
type ServiceLinkResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Status ServiceLinkResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=components.auth.ServiceLinkResponse_Status" json:"status,omitempty"`
}
func (x *ServiceLinkResponse) Reset() {
*x = ServiceLinkResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ServiceLinkResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ServiceLinkResponse) ProtoMessage() {}
func (x *ServiceLinkResponse) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ServiceLinkResponse.ProtoReflect.Descriptor instead.
func (*ServiceLinkResponse) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{2}
}
func (x *ServiceLinkResponse) GetStatus() ServiceLinkResponse_Status {
if x != nil {
return x.Status
}
return ServiceLinkResponse_SUCCESS
}
// Some user group. Corresponds to AuthGroup entity in model.py.
type AuthGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the group.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// List of members that are explicitly in this group.
Members []string `protobuf:"bytes,2,rep,name=members,proto3" json:"members,omitempty"`
// List of identity-glob expressions (like 'user:*@example.com').
Globs []string `protobuf:"bytes,3,rep,name=globs,proto3" json:"globs,omitempty"`
// List of nested group names.
Nested []string `protobuf:"bytes,4,rep,name=nested,proto3" json:"nested,omitempty"`
// Human readable description.
Description string `protobuf:"bytes,5,opt,name=description,proto3" json:"description,omitempty"`
// When the group was created. Microseconds since epoch.
CreatedTs int64 `protobuf:"varint,6,opt,name=created_ts,json=createdTs,proto3" json:"created_ts,omitempty"`
// Who created the group.
CreatedBy string `protobuf:"bytes,7,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`
// When the group was modified last time. Microseconds since epoch.
ModifiedTs int64 `protobuf:"varint,8,opt,name=modified_ts,json=modifiedTs,proto3" json:"modified_ts,omitempty"`
// Who modified the group last time.
ModifiedBy string `protobuf:"bytes,9,opt,name=modified_by,json=modifiedBy,proto3" json:"modified_by,omitempty"`
// A name of the group that can modify or delete this group.
Owners string `protobuf:"bytes,10,opt,name=owners,proto3" json:"owners,omitempty"`
}
func (x *AuthGroup) Reset() {
*x = AuthGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuthGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthGroup) ProtoMessage() {}
func (x *AuthGroup) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthGroup.ProtoReflect.Descriptor instead.
func (*AuthGroup) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{3}
}
func (x *AuthGroup) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AuthGroup) GetMembers() []string {
if x != nil {
return x.Members
}
return nil
}
func (x *AuthGroup) GetGlobs() []string {
if x != nil {
return x.Globs
}
return nil
}
func (x *AuthGroup) GetNested() []string {
if x != nil {
return x.Nested
}
return nil
}
func (x *AuthGroup) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *AuthGroup) GetCreatedTs() int64 {
if x != nil {
return x.CreatedTs
}
return 0
}
func (x *AuthGroup) GetCreatedBy() string {
if x != nil {
return x.CreatedBy
}
return ""
}
func (x *AuthGroup) GetModifiedTs() int64 {
if x != nil {
return x.ModifiedTs
}
return 0
}
func (x *AuthGroup) GetModifiedBy() string {
if x != nil {
return x.ModifiedBy
}
return ""
}
func (x *AuthGroup) GetOwners() string {
if x != nil {
return x.Owners
}
return ""
}
// A named set of whitelisted IP addresses. Corresponds to AuthIPWhitelist
// entity in model.py.
type AuthIPWhitelist struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the IP whitelist.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// The list of IP subnets.
Subnets []string `protobuf:"bytes,2,rep,name=subnets,proto3" json:"subnets,omitempty"`
// Human readable description.
Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
// When the list was created. Microseconds since epoch.
CreatedTs int64 `protobuf:"varint,4,opt,name=created_ts,json=createdTs,proto3" json:"created_ts,omitempty"`
// Who created the list.
CreatedBy string `protobuf:"bytes,5,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`
// When the list was modified. Microseconds since epoch.
ModifiedTs int64 `protobuf:"varint,6,opt,name=modified_ts,json=modifiedTs,proto3" json:"modified_ts,omitempty"`
// Who modified the list the last time.
ModifiedBy string `protobuf:"bytes,7,opt,name=modified_by,json=modifiedBy,proto3" json:"modified_by,omitempty"`
}
func (x *AuthIPWhitelist) Reset() {
*x = AuthIPWhitelist{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuthIPWhitelist) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthIPWhitelist) ProtoMessage() {}
func (x *AuthIPWhitelist) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthIPWhitelist.ProtoReflect.Descriptor instead.
func (*AuthIPWhitelist) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{4}
}
func (x *AuthIPWhitelist) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *AuthIPWhitelist) GetSubnets() []string {
if x != nil {
return x.Subnets
}
return nil
}
func (x *AuthIPWhitelist) GetDescription() string {
if x != nil {
return x.Description
}
return ""
}
func (x *AuthIPWhitelist) GetCreatedTs() int64 {
if x != nil {
return x.CreatedTs
}
return 0
}
func (x *AuthIPWhitelist) GetCreatedBy() string {
if x != nil {
return x.CreatedBy
}
return ""
}
func (x *AuthIPWhitelist) GetModifiedTs() int64 {
if x != nil {
return x.ModifiedTs
}
return 0
}
func (x *AuthIPWhitelist) GetModifiedBy() string {
if x != nil {
return x.ModifiedBy
}
return ""
}
// A pair (identity, IP whitelist name) plus some metadata. Corresponds to
// AuthIPWhitelistAssignments.Assignment model in model.py.
type AuthIPWhitelistAssignment struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Identity name to limit by IP whitelist.
Identity string `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
// Name of IP whitelist to use (see AuthIPWhitelist).
IpWhitelist string `protobuf:"bytes,2,opt,name=ip_whitelist,json=ipWhitelist,proto3" json:"ip_whitelist,omitempty"`
// Why the assignment was created.
Comment string `protobuf:"bytes,3,opt,name=comment,proto3" json:"comment,omitempty"`
// When the assignment was created. Microseconds since epoch.
CreatedTs int64 `protobuf:"varint,4,opt,name=created_ts,json=createdTs,proto3" json:"created_ts,omitempty"`
// Who created the assignment.
CreatedBy string `protobuf:"bytes,5,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`
}
func (x *AuthIPWhitelistAssignment) Reset() {
*x = AuthIPWhitelistAssignment{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuthIPWhitelistAssignment) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthIPWhitelistAssignment) ProtoMessage() {}
func (x *AuthIPWhitelistAssignment) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthIPWhitelistAssignment.ProtoReflect.Descriptor instead.
func (*AuthIPWhitelistAssignment) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{5}
}
func (x *AuthIPWhitelistAssignment) GetIdentity() string {
if x != nil {
return x.Identity
}
return ""
}
func (x *AuthIPWhitelistAssignment) GetIpWhitelist() string {
if x != nil {
return x.IpWhitelist
}
return ""
}
func (x *AuthIPWhitelistAssignment) GetComment() string {
if x != nil {
return x.Comment
}
return ""
}
func (x *AuthIPWhitelistAssignment) GetCreatedTs() int64 {
if x != nil {
return x.CreatedTs
}
return 0
}
func (x *AuthIPWhitelistAssignment) GetCreatedBy() string {
if x != nil {
return x.CreatedBy
}
return ""
}
// An entire database of auth configuration that is being replicated.
type AuthDB struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// OAuth2 client_id to use to mint new OAuth2 tokens.
OauthClientId string `protobuf:"bytes,1,opt,name=oauth_client_id,json=oauthClientId,proto3" json:"oauth_client_id,omitempty"`
// OAuth2 client secret. Not so secret really, since it's passed to clients.
OauthClientSecret string `protobuf:"bytes,2,opt,name=oauth_client_secret,json=oauthClientSecret,proto3" json:"oauth_client_secret,omitempty"`
// Additional OAuth2 client_ids allowed to access the services.
OauthAdditionalClientIds []string `protobuf:"bytes,3,rep,name=oauth_additional_client_ids,json=oauthAdditionalClientIds,proto3" json:"oauth_additional_client_ids,omitempty"`
// All groups.
Groups []*AuthGroup `protobuf:"bytes,4,rep,name=groups,proto3" json:"groups,omitempty"`
// All IP whitelists.
IpWhitelists []*AuthIPWhitelist `protobuf:"bytes,6,rep,name=ip_whitelists,json=ipWhitelists,proto3" json:"ip_whitelists,omitempty"`
// Mapping 'account -> IP whitlist to use for that account'.
IpWhitelistAssignments []*AuthIPWhitelistAssignment `protobuf:"bytes,7,rep,name=ip_whitelist_assignments,json=ipWhitelistAssignments,proto3" json:"ip_whitelist_assignments,omitempty"`
// URL of a token server to use to generate delegation tokens.
TokenServerUrl string `protobuf:"bytes,8,opt,name=token_server_url,json=tokenServerUrl,proto3" json:"token_server_url,omitempty"`
// Serialized security_config.SecurityConfig proto with security-related
// configuration to distribute across all services.
//
// It is distributed in a serialized form to make sure old services ingest it
// fully, even if they don't understand some SecurityConfig proto fields
// (yet). As soon as their code is updated, they SHOULD start using all
// SecurityConfig fields, without waiting for another push from Auth Service.
//
// If we use SecurityConfig directly here, old services would just drop fields
// they don't understand when accepting an AuthDB push.
SecurityConfig []byte `protobuf:"bytes,9,opt,name=security_config,json=securityConfig,proto3" json:"security_config,omitempty"`
// Definition of all known permissions and realms in a LUCI deployment.
//
// It is ultimately used by LUCI services for authorizing access to resources.
// See realms.proto for more details.
Realms *Realms `protobuf:"bytes,11,opt,name=realms,proto3" json:"realms,omitempty"`
}
func (x *AuthDB) Reset() {
*x = AuthDB{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuthDB) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthDB) ProtoMessage() {}
func (x *AuthDB) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthDB.ProtoReflect.Descriptor instead.
func (*AuthDB) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{6}
}
func (x *AuthDB) GetOauthClientId() string {
if x != nil {
return x.OauthClientId
}
return ""
}
func (x *AuthDB) GetOauthClientSecret() string {
if x != nil {
return x.OauthClientSecret
}
return ""
}
func (x *AuthDB) GetOauthAdditionalClientIds() []string {
if x != nil {
return x.OauthAdditionalClientIds
}
return nil
}
func (x *AuthDB) GetGroups() []*AuthGroup {
if x != nil {
return x.Groups
}
return nil
}
func (x *AuthDB) GetIpWhitelists() []*AuthIPWhitelist {
if x != nil {
return x.IpWhitelists
}
return nil
}
func (x *AuthDB) GetIpWhitelistAssignments() []*AuthIPWhitelistAssignment {
if x != nil {
return x.IpWhitelistAssignments
}
return nil
}
func (x *AuthDB) GetTokenServerUrl() string {
if x != nil {
return x.TokenServerUrl
}
return ""
}
func (x *AuthDB) GetSecurityConfig() []byte {
if x != nil {
return x.SecurityConfig
}
return nil
}
func (x *AuthDB) GetRealms() *Realms {
if x != nil {
return x.Realms
}
return nil
}
// Information about some particular revision of auth DB.
type AuthDBRevision struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// GAE App ID of a service holding primary copy of Auth DB.
PrimaryId string `protobuf:"bytes,1,opt,name=primary_id,json=primaryId,proto3" json:"primary_id,omitempty"`
// Revision of Auth DB being pushed.
AuthDbRev int64 `protobuf:"varint,2,opt,name=auth_db_rev,json=authDbRev,proto3" json:"auth_db_rev,omitempty"`
// Timestamp of that revision by Primary's clock, microseconds since epoch.
ModifiedTs int64 `protobuf:"varint,3,opt,name=modified_ts,json=modifiedTs,proto3" json:"modified_ts,omitempty"`
}
func (x *AuthDBRevision) Reset() {
*x = AuthDBRevision{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *AuthDBRevision) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AuthDBRevision) ProtoMessage() {}
func (x *AuthDBRevision) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AuthDBRevision.ProtoReflect.Descriptor instead.
func (*AuthDBRevision) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{7}
}
func (x *AuthDBRevision) GetPrimaryId() string {
if x != nil {
return x.PrimaryId
}
return ""
}
func (x *AuthDBRevision) GetAuthDbRev() int64 {
if x != nil {
return x.AuthDbRev
}
return 0
}
func (x *AuthDBRevision) GetModifiedTs() int64 {
if x != nil {
return x.ModifiedTs
}
return 0
}
// SignedAuthDB contains serialized and signed AuthDB proto.
//
// It is used to store AuthDB snapshots in Google Storage. Signing is used as
// a defense against unauthorized writes to the storage bucket.
type SignedAuthDB struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Serialized ReplicationPushRequest message with actual data.
//
// Contains revision information and AuthDB itself.
AuthDbBlob []byte `protobuf:"bytes,1,opt,name=auth_db_blob,json=authDbBlob,proto3" json:"auth_db_blob,omitempty"`
// Service account name whose key was used to sign the AuthDB blob.
SignerId string `protobuf:"bytes,2,opt,name=signer_id,json=signerId,proto3" json:"signer_id,omitempty"`
// ID of the signing key.
SigningKeyId string `protobuf:"bytes,3,opt,name=signing_key_id,json=signingKeyId,proto3" json:"signing_key_id,omitempty"`
// The signature of auth_db_blob field.
//
// It is RS256(SHA512(auth_db_blob)).
//
// Where:
// * RS256 is RSASSA-PKCS1-v1_5 using SHA-256, see RS256 algo in RFC7518.
// * SHA512 is a byte string (64 bytes) with SHA-512 digest of its input.
//
// Such peculiar structure is due to limitations of GAE signing infrastructure
// (RS256 function can accept at most 8KB of input).
//
// Consumers of SignedAuthDB are expected to do the following:
// 1. Check 'signer_id' is what they expect.
// 2. Use https://www.googleapis.com/service_accounts/v1/metadata/x509/...
// endpoint to get the signer's public key with ID 'signing_key_id'.
// 3. Construct to-be-signed string as SHA512(auth_db_blob).
// 4. Verify 'signature' matches to-be-signed string using the public key
// from step 2.
Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"`
}
func (x *SignedAuthDB) Reset() {
*x = SignedAuthDB{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SignedAuthDB) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SignedAuthDB) ProtoMessage() {}
func (x *SignedAuthDB) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SignedAuthDB.ProtoReflect.Descriptor instead.
func (*SignedAuthDB) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{8}
}
func (x *SignedAuthDB) GetAuthDbBlob() []byte {
if x != nil {
return x.AuthDbBlob
}
return nil
}
func (x *SignedAuthDB) GetSignerId() string {
if x != nil {
return x.SignerId
}
return ""
}
func (x *SignedAuthDB) GetSigningKeyId() string {
if x != nil {
return x.SigningKeyId
}
return ""
}
func (x *SignedAuthDB) GetSignature() []byte {
if x != nil {
return x.Signature
}
return nil
}
// Published by Primary into 'auth-db-changed' PubSub topic. The body of the
// message is base64 encoded serialized ChangeNotification. Additional
// attributes are:
// X-AuthDB-SigKey-v1: <id of a public key>
// X-AuthDB-SigVal-v1: <base64 encoded RSA-SHA256(blob) signature>
type ChangeNotification struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// New revision of the AuthDB.
Revision *AuthDBRevision `protobuf:"bytes,1,opt,name=revision,proto3" json:"revision,omitempty"`
}
func (x *ChangeNotification) Reset() {
*x = ChangeNotification{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ChangeNotification) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ChangeNotification) ProtoMessage() {}
func (x *ChangeNotification) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ChangeNotification.ProtoReflect.Descriptor instead.
func (*ChangeNotification) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{9}
}
func (x *ChangeNotification) GetRevision() *AuthDBRevision {
if x != nil {
return x.Revision
}
return nil
}
// Sent from Primary to Replica to update Replica's AuthDB.
//
// Primary signs the entire serialized message with its private key and appends
// two headers to HTTP request that carries the blob:
// X-AuthDB-SigKey-v1: <id of a public key>
// X-AuthDB-SigVal-v1: <base64 encoded RSA-SHA256(SHA512(blob)) signature>
//
// Binary serialization of ReplicationPushRequest is sometimes misleadingly
// called "AuthDB blob". It is stored in Datastore (as is) and in Google Storage
// (as serialized SignedAuthDB) for consumers that do not use Primary -> Replica
// protocol.
type ReplicationPushRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Revision that is being pushed.
Revision *AuthDBRevision `protobuf:"bytes,1,opt,name=revision,proto3" json:"revision,omitempty"`
// An entire database of auth configuration for specific revision.
AuthDb *AuthDB `protobuf:"bytes,2,opt,name=auth_db,json=authDb,proto3" json:"auth_db,omitempty"`
// Version of 'auth' component on Primary, see components/auth/version.py.
AuthCodeVersion string `protobuf:"bytes,3,opt,name=auth_code_version,json=authCodeVersion,proto3" json:"auth_code_version,omitempty"`
}
func (x *ReplicationPushRequest) Reset() {
*x = ReplicationPushRequest{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReplicationPushRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReplicationPushRequest) ProtoMessage() {}
func (x *ReplicationPushRequest) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ReplicationPushRequest.ProtoReflect.Descriptor instead.
func (*ReplicationPushRequest) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{10}
}
func (x *ReplicationPushRequest) GetRevision() *AuthDBRevision {
if x != nil {
return x.Revision
}
return nil
}
func (x *ReplicationPushRequest) GetAuthDb() *AuthDB {
if x != nil {
return x.AuthDb
}
return nil
}
func (x *ReplicationPushRequest) GetAuthCodeVersion() string {
if x != nil {
return x.AuthCodeVersion
}
return ""
}
// Replica's response to ReplicationPushRequest.
type ReplicationPushResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Overall status of the operation.
Status ReplicationPushResponse_Status `protobuf:"varint,1,opt,name=status,proto3,enum=components.auth.ReplicationPushResponse_Status" json:"status,omitempty"`
// Revision known by Replica (set for APPLIED and SKIPPED statuses).
CurrentRevision *AuthDBRevision `protobuf:"bytes,2,opt,name=current_revision,json=currentRevision,proto3" json:"current_revision,omitempty"`
// Present for TRANSIENT_ERROR and FATAL_ERROR statuses.
ErrorCode ReplicationPushResponse_ErrorCode `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=components.auth.ReplicationPushResponse_ErrorCode" json:"error_code,omitempty"`
// Version of 'auth' component on Replica, see components/auth/version.py.
AuthCodeVersion string `protobuf:"bytes,4,opt,name=auth_code_version,json=authCodeVersion,proto3" json:"auth_code_version,omitempty"`
}
func (x *ReplicationPushResponse) Reset() {
*x = ReplicationPushResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_components_auth_proto_replication_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ReplicationPushResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ReplicationPushResponse) ProtoMessage() {}
func (x *ReplicationPushResponse) ProtoReflect() protoreflect.Message {
mi := &file_components_auth_proto_replication_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ReplicationPushResponse.ProtoReflect.Descriptor instead.
func (*ReplicationPushResponse) Descriptor() ([]byte, []int) {
return file_components_auth_proto_replication_proto_rawDescGZIP(), []int{11}
}
func (x *ReplicationPushResponse) GetStatus() ReplicationPushResponse_Status {
if x != nil {
return x.Status
}
return ReplicationPushResponse_APPLIED
}
func (x *ReplicationPushResponse) GetCurrentRevision() *AuthDBRevision {
if x != nil {
return x.CurrentRevision
}
return nil
}
func (x *ReplicationPushResponse) GetErrorCode() ReplicationPushResponse_ErrorCode {
if x != nil {
return x.ErrorCode
}
return ReplicationPushResponse_ERROR_UNKNOWN
}
func (x *ReplicationPushResponse) GetAuthCodeVersion() string {
if x != nil {
return x.AuthCodeVersion
}
return ""
}
var File_components_auth_proto_replication_proto protoreflect.FileDescriptor
var file_components_auth_proto_replication_proto_rawDesc = []byte{
0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x75, 0x74,
0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x63, 0x6f, 0x6d, 0x70, 0x6f,
0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x1a, 0x22, 0x63, 0x6f, 0x6d, 0x70,
0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e,
0x01, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x69,
0x63, 0x6b, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x75,
0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72,
0x79, 0x55, 0x72, 0x6c, 0x12, 0x21, 0x0a, 0x0c, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
0x64, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x67, 0x65, 0x6e, 0x65,
0x72, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65,
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x22,
0x70, 0x0a, 0x12, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x1f, 0x0a,
0x0b, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x55, 0x72, 0x6c, 0x12, 0x21,
0x0a, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x42,
0x79, 0x22, 0xa6, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x6e,
0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x06, 0x73, 0x74, 0x61,
0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x63, 0x6f, 0x6d, 0x70,
0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x53, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x4a,
0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43,
0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f,
0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x41,
0x44, 0x5f, 0x54, 0x49, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x55,
0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0xa1, 0x02, 0x0a, 0x09, 0x41,
0x75, 0x74, 0x68, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d,
0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x6c, 0x6f, 0x62, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x67, 0x6c, 0x6f, 0x62, 0x73, 0x12, 0x16, 0x0a, 0x06,
0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x65,
0x73, 0x74, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72,
0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
0x64, 0x5f, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x64, 0x54, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64,
0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74,
0x65, 0x64, 0x42, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64,
0x5f, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66,
0x69, 0x65, 0x64, 0x54, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65,
0x64, 0x5f, 0x62, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69,
0x66, 0x69, 0x65, 0x64, 0x42, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x22, 0xe1,
0x01, 0x0a, 0x0f, 0x41, 0x75, 0x74, 0x68, 0x49, 0x50, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x73,
0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x73,
0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54,
0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79,
0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74, 0x73, 0x18,
0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54,
0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x79,
0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64,
0x42, 0x79, 0x22, 0xb2, 0x01, 0x0a, 0x19, 0x41, 0x75, 0x74, 0x68, 0x49, 0x50, 0x57, 0x68, 0x69,
0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74,
0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c,
0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0b, 0x69, 0x70, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12,
0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65,
0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63,
0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72,
0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x22, 0x97, 0x04, 0x0a, 0x06, 0x41, 0x75, 0x74, 0x68,
0x44, 0x42, 0x12, 0x26, 0x0a, 0x0f, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65,
0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x61, 0x75,
0x74, 0x68, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x61,
0x75, 0x74, 0x68, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6c,
0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x6f, 0x61,
0x75, 0x74, 0x68, 0x5f, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x63,
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
0x18, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x12, 0x32, 0x0a, 0x06, 0x67, 0x72, 0x6f,
0x75, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x70,
0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68,
0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x45, 0x0a,
0x0d, 0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x06,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74,
0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x50, 0x57, 0x68, 0x69,
0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x0c, 0x69, 0x70, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c,
0x69, 0x73, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x18, 0x69, 0x70, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65,
0x6c, 0x69, 0x73, 0x74, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73,
0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65,
0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x49, 0x50, 0x57,
0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65,
0x6e, 0x74, 0x52, 0x16, 0x69, 0x70, 0x57, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x41,
0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f,
0x6b, 0x65, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x08,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x65,
0x72, 0x55, 0x72, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79,
0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x73,
0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a,
0x06, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e,
0x72, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x6d, 0x73, 0x52, 0x06, 0x72,
0x65, 0x61, 0x6c, 0x6d, 0x73, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0a, 0x10,
0x0b, 0x22, 0x70, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x68, 0x44, 0x42, 0x52, 0x65, 0x76, 0x69, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79,
0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x62, 0x5f, 0x72, 0x65,
0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x44, 0x62, 0x52,
0x65, 0x76, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x74,
0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65,
0x64, 0x54, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x75,
0x74, 0x68, 0x44, 0x42, 0x12, 0x20, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x62, 0x5f,
0x62, 0x6c, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x68,
0x44, 0x62, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72,
0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x69, 0x67, 0x6e, 0x65,
0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b,
0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x67,
0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67,
0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69,
0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x51, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a,
0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1f, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74,
0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x44, 0x42, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x16, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e,
0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x44, 0x42,
0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x64, 0x62, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73,
0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x44, 0x42, 0x52, 0x06, 0x61, 0x75,
0x74, 0x68, 0x44, 0x62, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x64,
0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x22, 0xf4, 0x03, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x06,
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63,
0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x52,
0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73,
0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x1f, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x61, 0x75, 0x74,
0x68, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x44, 0x42, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
0x52, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x51, 0x0a, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e,
0x74, 0x73, 0x2e, 0x61, 0x75, 0x74, 0x68, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e,
0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x65, 0x72, 0x72, 0x6f, 0x72,
0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x64,
0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0f, 0x61, 0x75, 0x74, 0x68, 0x43, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x22, 0x48, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50,
0x50, 0x4c, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4b, 0x49, 0x50, 0x50,
0x45, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x45, 0x4e,
0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x41, 0x54,
0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0x7b, 0x0a, 0x09, 0x45, 0x72,
0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x52, 0x52, 0x4f, 0x52,
0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f,
0x54, 0x5f, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x10, 0x01, 0x12, 0x0d, 0x0a,
0x09, 0x46, 0x4f, 0x52, 0x42, 0x49, 0x44, 0x44, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11,
0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52,
0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x41, 0x44, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41,
0x54, 0x55, 0x52, 0x45, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x41, 0x44, 0x5f, 0x52, 0x45,
0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x05, 0x42, 0x3c, 0x5a, 0x3a, 0x67, 0x6f, 0x2e, 0x63, 0x68,
0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f,
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x73, 0x65, 0x72, 0x76,
0x69, 0x63, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x3b, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_components_auth_proto_replication_proto_rawDescOnce sync.Once
file_components_auth_proto_replication_proto_rawDescData = file_components_auth_proto_replication_proto_rawDesc
)
func file_components_auth_proto_replication_proto_rawDescGZIP() []byte {
file_components_auth_proto_replication_proto_rawDescOnce.Do(func() {
file_components_auth_proto_replication_proto_rawDescData = protoimpl.X.CompressGZIP(file_components_auth_proto_replication_proto_rawDescData)
})
return file_components_auth_proto_replication_proto_rawDescData
}
var file_components_auth_proto_replication_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_components_auth_proto_replication_proto_msgTypes = make([]protoimpl.MessageInfo, 12)
var file_components_auth_proto_replication_proto_goTypes = []interface{}{
(ServiceLinkResponse_Status)(0), // 0: components.auth.ServiceLinkResponse.Status
(ReplicationPushResponse_Status)(0), // 1: components.auth.ReplicationPushResponse.Status
(ReplicationPushResponse_ErrorCode)(0), // 2: components.auth.ReplicationPushResponse.ErrorCode
(*ServiceLinkTicket)(nil), // 3: components.auth.ServiceLinkTicket
(*ServiceLinkRequest)(nil), // 4: components.auth.ServiceLinkRequest
(*ServiceLinkResponse)(nil), // 5: components.auth.ServiceLinkResponse
(*AuthGroup)(nil), // 6: components.auth.AuthGroup
(*AuthIPWhitelist)(nil), // 7: components.auth.AuthIPWhitelist
(*AuthIPWhitelistAssignment)(nil), // 8: components.auth.AuthIPWhitelistAssignment
(*AuthDB)(nil), // 9: components.auth.AuthDB
(*AuthDBRevision)(nil), // 10: components.auth.AuthDBRevision
(*SignedAuthDB)(nil), // 11: components.auth.SignedAuthDB
(*ChangeNotification)(nil), // 12: components.auth.ChangeNotification
(*ReplicationPushRequest)(nil), // 13: components.auth.ReplicationPushRequest
(*ReplicationPushResponse)(nil), // 14: components.auth.ReplicationPushResponse
(*Realms)(nil), // 15: components.auth.realms.Realms
}
var file_components_auth_proto_replication_proto_depIdxs = []int32{
0, // 0: components.auth.ServiceLinkResponse.status:type_name -> components.auth.ServiceLinkResponse.Status
6, // 1: components.auth.AuthDB.groups:type_name -> components.auth.AuthGroup
7, // 2: components.auth.AuthDB.ip_whitelists:type_name -> components.auth.AuthIPWhitelist
8, // 3: components.auth.AuthDB.ip_whitelist_assignments:type_name -> components.auth.AuthIPWhitelistAssignment
15, // 4: components.auth.AuthDB.realms:type_name -> components.auth.realms.Realms
10, // 5: components.auth.ChangeNotification.revision:type_name -> components.auth.AuthDBRevision
10, // 6: components.auth.ReplicationPushRequest.revision:type_name -> components.auth.AuthDBRevision
9, // 7: components.auth.ReplicationPushRequest.auth_db:type_name -> components.auth.AuthDB
1, // 8: components.auth.ReplicationPushResponse.status:type_name -> components.auth.ReplicationPushResponse.Status
10, // 9: components.auth.ReplicationPushResponse.current_revision:type_name -> components.auth.AuthDBRevision
2, // 10: components.auth.ReplicationPushResponse.error_code:type_name -> components.auth.ReplicationPushResponse.ErrorCode
11, // [11:11] is the sub-list for method output_type
11, // [11:11] is the sub-list for method input_type
11, // [11:11] is the sub-list for extension type_name
11, // [11:11] is the sub-list for extension extendee
0, // [0:11] is the sub-list for field type_name
}
func init() { file_components_auth_proto_replication_proto_init() }
func file_components_auth_proto_replication_proto_init() {
if File_components_auth_proto_replication_proto != nil {
return
}
file_components_auth_proto_realms_proto_init()
if !protoimpl.UnsafeEnabled {
file_components_auth_proto_replication_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceLinkTicket); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceLinkRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ServiceLinkResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthIPWhitelist); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthIPWhitelistAssignment); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthDB); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*AuthDBRevision); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SignedAuthDB); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ChangeNotification); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplicationPushRequest); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_components_auth_proto_replication_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ReplicationPushResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_components_auth_proto_replication_proto_rawDesc,
NumEnums: 3,
NumMessages: 12,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_components_auth_proto_replication_proto_goTypes,
DependencyIndexes: file_components_auth_proto_replication_proto_depIdxs,
EnumInfos: file_components_auth_proto_replication_proto_enumTypes,
MessageInfos: file_components_auth_proto_replication_proto_msgTypes,
}.Build()
File_components_auth_proto_replication_proto = out.File
file_components_auth_proto_replication_proto_rawDesc = nil
file_components_auth_proto_replication_proto_goTypes = nil
file_components_auth_proto_replication_proto_depIdxs = nil
}