diff --git a/internal/mcp/handler_register_client.go b/internal/mcp/handler_register_client.go index 45deced47..9ef54f510 100644 --- a/internal/mcp/handler_register_client.go +++ b/internal/mcp/handler_register_client.go @@ -1,12 +1,13 @@ package mcp import ( + "encoding/json" "io" "net/http" + "time" "github.com/bufbuild/protovalidate-go" "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/proto" "github.com/pomerium/pomerium/internal/log" rfc7591v1 "github.com/pomerium/pomerium/internal/rfc7591" @@ -33,7 +34,7 @@ func (srv *Handler) RegisterClient(w http.ResponseWriter, r *http.Request) { return } - v := new(rfc7591v1.ClientRegistrationRequest) + v := new(rfc7591v1.ClientMetadata) err = protojson.Unmarshal(data, v) if err != nil { log.Ctx(ctx).Error().Err(err).Msg("failed to unmarshal request body") @@ -44,19 +45,26 @@ func (srv *Handler) RegisterClient(w http.ResponseWriter, r *http.Request) { err = protovalidate.Validate(v) if err != nil { log.Ctx(ctx).Error().Err(err).Msg("failed to validate request body") - clientRegistrationError(w, err, rfc7591v1.ErrorCode_ERROR_CODE_INVALID_CLIENT_METADATA) + clientRegistrationBadRequest(w, err) return } - resp, err := srv.storage.RegisterClient(ctx, v) + id, err := srv.storage.RegisterClient(ctx, v) if err != nil { log.Ctx(ctx).Error().Err(err).Msg("failed to register client") http.Error(w, "failed to register client", http.StatusInternalServerError) } - data, err = protojson.MarshalOptions{ - UseProtoNames: true, - }.Marshal(resp) + resp := struct { + *rfc7591v1.ClientMetadata + ClientID string `json:"client_id"` + ClientIDIssuedAt int64 `json:"client_id_issued_at"` + }{ + ClientMetadata: v, + ClientID: id, + ClientIDIssuedAt: time.Now().Unix(), + } + data, err = json.Marshal(resp) if err != nil { log.Ctx(ctx).Error().Err(err).Msg("failed to marshal response") http.Error(w, "failed to marshal response", http.StatusInternalServerError) @@ -70,13 +78,18 @@ func (srv *Handler) RegisterClient(w http.ResponseWriter, r *http.Request) { } } -func clientRegistrationError(w http.ResponseWriter, err error, code rfc7591v1.ErrorCode) { - v := &rfc7591v1.ClientRegistrationErrorResponse{ - Error: code, - ErrorDescription: proto.String(err.Error()), +func clientRegistrationBadRequest(w http.ResponseWriter, err error) { + v := struct { + Error string `json:"error"` + ErrorDescription string `json:"error_description,omitempty"` + }{ + Error: "invalid_client_metadata", + ErrorDescription: err.Error(), } - data, _ := protojson.Marshal(v) + data, _ := json.Marshal(v) w.Header().Set("Content-Type", "application/json") + w.Header().Set("Cache-Control", "no-store") + w.Header().Set("Pragma", "no-cache") w.WriteHeader(http.StatusBadRequest) _, _ = w.Write(data) } diff --git a/internal/mcp/storage.go b/internal/mcp/storage.go index 87c646265..6fb3b30b4 100644 --- a/internal/mcp/storage.go +++ b/internal/mcp/storage.go @@ -29,11 +29,11 @@ func NewStorage( func (storage *Storage) RegisterClient( ctx context.Context, - req *rfc7591v1.ClientRegistrationRequest, -) (*rfc7591v1.ClientInformationResponse, error) { + req *rfc7591v1.ClientMetadata, +) (string, error) { data := protoutil.NewAny(req) id := uuid.NewString() - rec, err := storage.client.Put(ctx, &databroker.PutRequest{ + _, err := storage.client.Put(ctx, &databroker.PutRequest{ Records: []*databroker.Record{{ Id: id, Data: data, @@ -41,20 +41,15 @@ func (storage *Storage) RegisterClient( }}, }) if err != nil { - return nil, err + return "", err } - if len(rec.Records) == 0 { - return nil, fmt.Errorf("no records returned") - } - - now := rec.Records[0].GetModifiedAt().Seconds - return getClientInformation(id, now, req), nil + return id, nil } func (storage *Storage) GetClientByID( ctx context.Context, id string, -) (*rfc7591v1.ClientRegistrationRequest, error) { +) (*rfc7591v1.ClientMetadata, error) { rec, err := storage.client.Get(ctx, &databroker.GetRequest{ Id: id, }) @@ -62,7 +57,7 @@ func (storage *Storage) GetClientByID( return nil, fmt.Errorf("failed to get client by ID: %w", err) } - v := new(rfc7591v1.ClientRegistrationRequest) + v := new(rfc7591v1.ClientMetadata) err = anypb.UnmarshalTo(rec.Record.Data, v, proto.UnmarshalOptions{}) if err != nil { return nil, fmt.Errorf("failed to unmarshal client registration request: %w", err) @@ -89,35 +84,3 @@ func (storage *Storage) CreateAuthorizationRequest( } return id, nil } - -func getClientInformation( - id string, - issuedAt int64, - req *rfc7591v1.ClientRegistrationRequest, -) *rfc7591v1.ClientInformationResponse { - return &rfc7591v1.ClientInformationResponse{ - ClientId: id, - ClientIdIssuedAt: proto.Int64(issuedAt), - RedirectUris: req.RedirectUris, - TokenEndpointAuthMethod: req.TokenEndpointAuthMethod, - GrantTypes: req.GrantTypes, - ResponseTypes: req.ResponseTypes, - ClientName: req.ClientName, - ClientNameLocalized: req.ClientNameLocalized, - ClientUri: req.ClientUri, - ClientUriLocalized: req.ClientUriLocalized, - LogoUri: req.LogoUri, - LogoUriLocalized: req.LogoUriLocalized, - Scope: req.Scope, - Contacts: req.Contacts, - TosUri: req.TosUri, - TosUriLocalized: req.TosUriLocalized, - PolicyUri: req.PolicyUri, - PolicyUriLocalized: req.PolicyUriLocalized, - JwksUri: req.JwksUri, - Jwks: req.Jwks, - SoftwareId: req.SoftwareId, - SoftwareVersion: req.SoftwareVersion, - SoftwareStatement: req.SoftwareStatement, - } -} diff --git a/internal/oauth21/validate_client.go b/internal/oauth21/validate_client.go index 6ebdf03c3..d34ca81b3 100644 --- a/internal/oauth21/validate_client.go +++ b/internal/oauth21/validate_client.go @@ -8,7 +8,7 @@ import ( ) func ValidateAuthorizationRequest( - client *rfc7591v1.ClientRegistrationRequest, + client *rfc7591v1.ClientMetadata, req *gen.AuthorizationRequest, ) error { if err := ValidateAuthorizationRequestRedirectURI(client, req.RedirectUri); err != nil { @@ -18,7 +18,7 @@ func ValidateAuthorizationRequest( } func ValidateAuthorizationRequestRedirectURI( - client *rfc7591v1.ClientRegistrationRequest, + client *rfc7591v1.ClientMetadata, redirectURI *string, ) error { if len(client.RedirectUris) == 0 { diff --git a/internal/oauth21/validate_client_test.go b/internal/oauth21/validate_client_test.go index babb38d6e..16e0e8010 100644 --- a/internal/oauth21/validate_client_test.go +++ b/internal/oauth21/validate_client_test.go @@ -4,23 +4,24 @@ import ( "testing" "github.com/zeebo/assert" + "google.golang.org/protobuf/proto" "github.com/pomerium/pomerium/internal/oauth21" "github.com/pomerium/pomerium/internal/oauth21/gen" rfc7591v1 "github.com/pomerium/pomerium/internal/rfc7591" ) -func ValidateClientTest(t *testing.T) { +func TestValidateRequest(t *testing.T) { t.Parallel() for _, tc := range []struct { name string - client *rfc7591v1.ClientRegistrationRequest + client *rfc7591v1.ClientMetadata req *gen.AuthorizationRequest err bool }{ { "optional redirect_uri, multiple redirect_uris", - &rfc7591v1.ClientRegistrationRequest{ + &rfc7591v1.ClientMetadata{ RedirectUris: []string{"https://example.com/callback", "https://example.com/other-callback"}, }, &gen.AuthorizationRequest{ @@ -28,6 +29,36 @@ func ValidateClientTest(t *testing.T) { }, true, }, + { + "optional redirect_uri, single redirect_uri", + &rfc7591v1.ClientMetadata{ + RedirectUris: []string{"https://example.com/callback"}, + }, + &gen.AuthorizationRequest{ + RedirectUri: nil, + }, + false, + }, + { + "matching redirect_uri", + &rfc7591v1.ClientMetadata{ + RedirectUris: []string{"https://example.com/callback", "https://example.com/other-callback"}, + }, + &gen.AuthorizationRequest{ + RedirectUri: proto.String("https://example.com/callback"), + }, + false, + }, + { + "non-matching redirect_uri", + &rfc7591v1.ClientMetadata{ + RedirectUris: []string{"https://example.com/callback", "https://example.com/other-callback"}, + }, + &gen.AuthorizationRequest{ + RedirectUri: proto.String("https://example.com/invalid-callback"), + }, + true, + }, } { t.Run(tc.name, func(t *testing.T) { t.Parallel() diff --git a/internal/rfc7591/types.pb.go b/internal/rfc7591/types.pb.go index d436c532d..c2ac7174f 100644 --- a/internal/rfc7591/types.pb.go +++ b/internal/rfc7591/types.pb.go @@ -23,66 +23,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Standard error codes for client registration errors (RFC 7591 Section 3.2.2). -type ErrorCode int32 - -const ( - ErrorCode_ERROR_CODE_UNSPECIFIED ErrorCode = 0 - // The value of one or more redirection URIs is invalid. - ErrorCode_ERROR_CODE_INVALID_REDIRECT_URI ErrorCode = 1 - // The value of one of the client metadata fields is invalid. - ErrorCode_ERROR_CODE_INVALID_CLIENT_METADATA ErrorCode = 2 - // The software statement presented is invalid. - ErrorCode_ERROR_CODE_INVALID_SOFTWARE_STATEMENT ErrorCode = 3 - // The software statement presented is not approved for use by this server. - ErrorCode_ERROR_CODE_UNAPPROVED_SOFTWARE_STATEMENT ErrorCode = 4 -) - -// Enum value maps for ErrorCode. -var ( - ErrorCode_name = map[int32]string{ - 0: "ERROR_CODE_UNSPECIFIED", - 1: "ERROR_CODE_INVALID_REDIRECT_URI", - 2: "ERROR_CODE_INVALID_CLIENT_METADATA", - 3: "ERROR_CODE_INVALID_SOFTWARE_STATEMENT", - 4: "ERROR_CODE_UNAPPROVED_SOFTWARE_STATEMENT", - } - ErrorCode_value = map[string]int32{ - "ERROR_CODE_UNSPECIFIED": 0, - "ERROR_CODE_INVALID_REDIRECT_URI": 1, - "ERROR_CODE_INVALID_CLIENT_METADATA": 2, - "ERROR_CODE_INVALID_SOFTWARE_STATEMENT": 3, - "ERROR_CODE_UNAPPROVED_SOFTWARE_STATEMENT": 4, - } -) - -func (x ErrorCode) Enum() *ErrorCode { - p := new(ErrorCode) - *p = x - return p -} - -func (x ErrorCode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (ErrorCode) Descriptor() protoreflect.EnumDescriptor { - return file_types_proto_enumTypes[0].Descriptor() -} - -func (ErrorCode) Type() protoreflect.EnumType { - return &file_types_proto_enumTypes[0] -} - -func (x ErrorCode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use ErrorCode.Descriptor instead. -func (ErrorCode) EnumDescriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{0} -} - // Represents the JSON Web Key Set (JWK Set) structure defined in RFC 7517. // This contains a set of JWKs. type JsonWebKeySet struct { @@ -756,561 +696,6 @@ func (x *ClientMetadata) GetSoftwareVersion() string { return "" } -// Represents the request sent to the Client Registration Endpoint (RFC 7591 -// Section 3.1). -type ClientRegistrationRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Fields correspond to ClientMetadata, indicating requested values. - // REQUIRED for redirect flows. - RedirectUris []string `protobuf:"bytes,1,rep,name=redirect_uris,json=redirectUris,proto3" json:"redirect_uris,omitempty"` - // OPTIONAL. Default is "client_secret_basic". - TokenEndpointAuthMethod *string `protobuf:"bytes,2,opt,name=token_endpoint_auth_method,json=tokenEndpointAuthMethod,proto3,oneof" json:"token_endpoint_auth_method,omitempty"` - // OPTIONAL. Default is ["authorization_code"]. - GrantTypes []string `protobuf:"bytes,3,rep,name=grant_types,json=grantTypes,proto3" json:"grant_types,omitempty"` - // OPTIONAL. Default is ["code"]. - ResponseTypes []string `protobuf:"bytes,4,rep,name=response_types,json=responseTypes,proto3" json:"response_types,omitempty"` - // OPTIONAL. RECOMMENDED. - ClientName *string `protobuf:"bytes,5,opt,name=client_name,json=clientName,proto3,oneof" json:"client_name,omitempty"` - // OPTIONAL. - ClientNameLocalized map[string]string `protobuf:"bytes,6,rep,name=client_name_localized,json=clientNameLocalized,proto3" json:"client_name_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL. RECOMMENDED. - ClientUri *string `protobuf:"bytes,7,opt,name=client_uri,json=clientUri,proto3,oneof" json:"client_uri,omitempty"` - // OPTIONAL. - ClientUriLocalized map[string]string `protobuf:"bytes,8,rep,name=client_uri_localized,json=clientUriLocalized,proto3" json:"client_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL. - LogoUri *string `protobuf:"bytes,9,opt,name=logo_uri,json=logoUri,proto3,oneof" json:"logo_uri,omitempty"` - // OPTIONAL. - LogoUriLocalized map[string]string `protobuf:"bytes,10,rep,name=logo_uri_localized,json=logoUriLocalized,proto3" json:"logo_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL. - Scope *string `protobuf:"bytes,11,opt,name=scope,proto3,oneof" json:"scope,omitempty"` - // OPTIONAL. - Contacts []string `protobuf:"bytes,12,rep,name=contacts,proto3" json:"contacts,omitempty"` - // OPTIONAL. - TosUri *string `protobuf:"bytes,13,opt,name=tos_uri,json=tosUri,proto3,oneof" json:"tos_uri,omitempty"` - // OPTIONAL. - TosUriLocalized map[string]string `protobuf:"bytes,14,rep,name=tos_uri_localized,json=tosUriLocalized,proto3" json:"tos_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL. - PolicyUri *string `protobuf:"bytes,15,opt,name=policy_uri,json=policyUri,proto3,oneof" json:"policy_uri,omitempty"` - // OPTIONAL. - PolicyUriLocalized map[string]string `protobuf:"bytes,16,rep,name=policy_uri_localized,json=policyUriLocalized,proto3" json:"policy_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL. Mutually exclusive with `jwks`. - JwksUri *string `protobuf:"bytes,17,opt,name=jwks_uri,json=jwksUri,proto3,oneof" json:"jwks_uri,omitempty"` - // OPTIONAL. Mutually exclusive with `jwks_uri`. - Jwks *JsonWebKeySet `protobuf:"bytes,18,opt,name=jwks,proto3,oneof" json:"jwks,omitempty"` - // OPTIONAL. - SoftwareId *string `protobuf:"bytes,19,opt,name=software_id,json=softwareId,proto3,oneof" json:"software_id,omitempty"` - // OPTIONAL. - SoftwareVersion *string `protobuf:"bytes,20,opt,name=software_version,json=softwareVersion,proto3,oneof" json:"software_version,omitempty"` - // OPTIONAL. A software statement containing client metadata values about the - // client software as claims. - SoftwareStatement *string `protobuf:"bytes,21,opt,name=software_statement,json=softwareStatement,proto3,oneof" json:"software_statement,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientRegistrationRequest) Reset() { - *x = ClientRegistrationRequest{} - mi := &file_types_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientRegistrationRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientRegistrationRequest) ProtoMessage() {} - -func (x *ClientRegistrationRequest) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[7] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientRegistrationRequest.ProtoReflect.Descriptor instead. -func (*ClientRegistrationRequest) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{7} -} - -func (x *ClientRegistrationRequest) GetRedirectUris() []string { - if x != nil { - return x.RedirectUris - } - return nil -} - -func (x *ClientRegistrationRequest) GetTokenEndpointAuthMethod() string { - if x != nil && x.TokenEndpointAuthMethod != nil { - return *x.TokenEndpointAuthMethod - } - return "" -} - -func (x *ClientRegistrationRequest) GetGrantTypes() []string { - if x != nil { - return x.GrantTypes - } - return nil -} - -func (x *ClientRegistrationRequest) GetResponseTypes() []string { - if x != nil { - return x.ResponseTypes - } - return nil -} - -func (x *ClientRegistrationRequest) GetClientName() string { - if x != nil && x.ClientName != nil { - return *x.ClientName - } - return "" -} - -func (x *ClientRegistrationRequest) GetClientNameLocalized() map[string]string { - if x != nil { - return x.ClientNameLocalized - } - return nil -} - -func (x *ClientRegistrationRequest) GetClientUri() string { - if x != nil && x.ClientUri != nil { - return *x.ClientUri - } - return "" -} - -func (x *ClientRegistrationRequest) GetClientUriLocalized() map[string]string { - if x != nil { - return x.ClientUriLocalized - } - return nil -} - -func (x *ClientRegistrationRequest) GetLogoUri() string { - if x != nil && x.LogoUri != nil { - return *x.LogoUri - } - return "" -} - -func (x *ClientRegistrationRequest) GetLogoUriLocalized() map[string]string { - if x != nil { - return x.LogoUriLocalized - } - return nil -} - -func (x *ClientRegistrationRequest) GetScope() string { - if x != nil && x.Scope != nil { - return *x.Scope - } - return "" -} - -func (x *ClientRegistrationRequest) GetContacts() []string { - if x != nil { - return x.Contacts - } - return nil -} - -func (x *ClientRegistrationRequest) GetTosUri() string { - if x != nil && x.TosUri != nil { - return *x.TosUri - } - return "" -} - -func (x *ClientRegistrationRequest) GetTosUriLocalized() map[string]string { - if x != nil { - return x.TosUriLocalized - } - return nil -} - -func (x *ClientRegistrationRequest) GetPolicyUri() string { - if x != nil && x.PolicyUri != nil { - return *x.PolicyUri - } - return "" -} - -func (x *ClientRegistrationRequest) GetPolicyUriLocalized() map[string]string { - if x != nil { - return x.PolicyUriLocalized - } - return nil -} - -func (x *ClientRegistrationRequest) GetJwksUri() string { - if x != nil && x.JwksUri != nil { - return *x.JwksUri - } - return "" -} - -func (x *ClientRegistrationRequest) GetJwks() *JsonWebKeySet { - if x != nil { - return x.Jwks - } - return nil -} - -func (x *ClientRegistrationRequest) GetSoftwareId() string { - if x != nil && x.SoftwareId != nil { - return *x.SoftwareId - } - return "" -} - -func (x *ClientRegistrationRequest) GetSoftwareVersion() string { - if x != nil && x.SoftwareVersion != nil { - return *x.SoftwareVersion - } - return "" -} - -func (x *ClientRegistrationRequest) GetSoftwareStatement() string { - if x != nil && x.SoftwareStatement != nil { - return *x.SoftwareStatement - } - return "" -} - -// Represents the successful response from the Client Registration Endpoint (RFC -// 7591 Section 3.2.1). -type ClientInformationResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // REQUIRED. OAuth 2.0 client identifier string issued by the authorization - // server. - ClientId string `protobuf:"bytes,1,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - // OPTIONAL. OAuth 2.0 client secret string. Only issued for confidential - // clients. - ClientSecret *string `protobuf:"bytes,2,opt,name=client_secret,json=clientSecret,proto3,oneof" json:"client_secret,omitempty"` - // OPTIONAL. Time at which the client identifier was issued (Unix timestamp, - // seconds since epoch). - ClientIdIssuedAt *int64 `protobuf:"varint,3,opt,name=client_id_issued_at,json=clientIdIssuedAt,proto3,oneof" json:"client_id_issued_at,omitempty"` - // REQUIRED if "client_secret" is issued, OPTIONAL otherwise. Time at which - // the client secret will expire (Unix timestamp, seconds since epoch), or 0 - // if it will not expire. - ClientSecretExpiresAt *int64 `protobuf:"varint,4,opt,name=client_secret_expires_at,json=clientSecretExpiresAt,proto3,oneof" json:"client_secret_expires_at,omitempty"` - // Contains all registered metadata about this client, reflecting server - // state. REQUIRED if applicable to the client registration. - RedirectUris []string `protobuf:"bytes,5,rep,name=redirect_uris,json=redirectUris,proto3" json:"redirect_uris,omitempty"` - // OPTIONAL (reflects registered value, may have default). - TokenEndpointAuthMethod *string `protobuf:"bytes,6,opt,name=token_endpoint_auth_method,json=tokenEndpointAuthMethod,proto3,oneof" json:"token_endpoint_auth_method,omitempty"` - // OPTIONAL (reflects registered value, may have default). - GrantTypes []string `protobuf:"bytes,7,rep,name=grant_types,json=grantTypes,proto3" json:"grant_types,omitempty"` - // OPTIONAL (reflects registered value, may have default). - ResponseTypes []string `protobuf:"bytes,8,rep,name=response_types,json=responseTypes,proto3" json:"response_types,omitempty"` - // OPTIONAL (reflects registered value). - ClientName *string `protobuf:"bytes,9,opt,name=client_name,json=clientName,proto3,oneof" json:"client_name,omitempty"` - // OPTIONAL (reflects registered value). - ClientNameLocalized map[string]string `protobuf:"bytes,10,rep,name=client_name_localized,json=clientNameLocalized,proto3" json:"client_name_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL (reflects registered value). - ClientUri *string `protobuf:"bytes,11,opt,name=client_uri,json=clientUri,proto3,oneof" json:"client_uri,omitempty"` - // OPTIONAL (reflects registered value). - ClientUriLocalized map[string]string `protobuf:"bytes,12,rep,name=client_uri_localized,json=clientUriLocalized,proto3" json:"client_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL (reflects registered value). - LogoUri *string `protobuf:"bytes,13,opt,name=logo_uri,json=logoUri,proto3,oneof" json:"logo_uri,omitempty"` - // OPTIONAL (reflects registered value). - LogoUriLocalized map[string]string `protobuf:"bytes,14,rep,name=logo_uri_localized,json=logoUriLocalized,proto3" json:"logo_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL (reflects registered value). - Scope *string `protobuf:"bytes,15,opt,name=scope,proto3,oneof" json:"scope,omitempty"` - // OPTIONAL (reflects registered value). - Contacts []string `protobuf:"bytes,16,rep,name=contacts,proto3" json:"contacts,omitempty"` - // OPTIONAL (reflects registered value). - TosUri *string `protobuf:"bytes,17,opt,name=tos_uri,json=tosUri,proto3,oneof" json:"tos_uri,omitempty"` - // OPTIONAL (reflects registered value). - TosUriLocalized map[string]string `protobuf:"bytes,18,rep,name=tos_uri_localized,json=tosUriLocalized,proto3" json:"tos_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL (reflects registered value). - PolicyUri *string `protobuf:"bytes,19,opt,name=policy_uri,json=policyUri,proto3,oneof" json:"policy_uri,omitempty"` - // OPTIONAL (reflects registered value). - PolicyUriLocalized map[string]string `protobuf:"bytes,20,rep,name=policy_uri_localized,json=policyUriLocalized,proto3" json:"policy_uri_localized,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - // OPTIONAL (reflects registered value). Mutually exclusive with `jwks`. - JwksUri *string `protobuf:"bytes,21,opt,name=jwks_uri,json=jwksUri,proto3,oneof" json:"jwks_uri,omitempty"` - // OPTIONAL (reflects registered value). Mutually exclusive with `jwks_uri`. - Jwks *JsonWebKeySet `protobuf:"bytes,22,opt,name=jwks,proto3,oneof" json:"jwks,omitempty"` - // OPTIONAL (reflects registered value). - SoftwareId *string `protobuf:"bytes,23,opt,name=software_id,json=softwareId,proto3,oneof" json:"software_id,omitempty"` - // OPTIONAL (reflects registered value). - SoftwareVersion *string `protobuf:"bytes,24,opt,name=software_version,json=softwareVersion,proto3,oneof" json:"software_version,omitempty"` - // OPTIONAL. If a software statement was used in the request, it MUST be - // returned unmodified. - SoftwareStatement *string `protobuf:"bytes,25,opt,name=software_statement,json=softwareStatement,proto3,oneof" json:"software_statement,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientInformationResponse) Reset() { - *x = ClientInformationResponse{} - mi := &file_types_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientInformationResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientInformationResponse) ProtoMessage() {} - -func (x *ClientInformationResponse) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[8] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientInformationResponse.ProtoReflect.Descriptor instead. -func (*ClientInformationResponse) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{8} -} - -func (x *ClientInformationResponse) GetClientId() string { - if x != nil { - return x.ClientId - } - return "" -} - -func (x *ClientInformationResponse) GetClientSecret() string { - if x != nil && x.ClientSecret != nil { - return *x.ClientSecret - } - return "" -} - -func (x *ClientInformationResponse) GetClientIdIssuedAt() int64 { - if x != nil && x.ClientIdIssuedAt != nil { - return *x.ClientIdIssuedAt - } - return 0 -} - -func (x *ClientInformationResponse) GetClientSecretExpiresAt() int64 { - if x != nil && x.ClientSecretExpiresAt != nil { - return *x.ClientSecretExpiresAt - } - return 0 -} - -func (x *ClientInformationResponse) GetRedirectUris() []string { - if x != nil { - return x.RedirectUris - } - return nil -} - -func (x *ClientInformationResponse) GetTokenEndpointAuthMethod() string { - if x != nil && x.TokenEndpointAuthMethod != nil { - return *x.TokenEndpointAuthMethod - } - return "" -} - -func (x *ClientInformationResponse) GetGrantTypes() []string { - if x != nil { - return x.GrantTypes - } - return nil -} - -func (x *ClientInformationResponse) GetResponseTypes() []string { - if x != nil { - return x.ResponseTypes - } - return nil -} - -func (x *ClientInformationResponse) GetClientName() string { - if x != nil && x.ClientName != nil { - return *x.ClientName - } - return "" -} - -func (x *ClientInformationResponse) GetClientNameLocalized() map[string]string { - if x != nil { - return x.ClientNameLocalized - } - return nil -} - -func (x *ClientInformationResponse) GetClientUri() string { - if x != nil && x.ClientUri != nil { - return *x.ClientUri - } - return "" -} - -func (x *ClientInformationResponse) GetClientUriLocalized() map[string]string { - if x != nil { - return x.ClientUriLocalized - } - return nil -} - -func (x *ClientInformationResponse) GetLogoUri() string { - if x != nil && x.LogoUri != nil { - return *x.LogoUri - } - return "" -} - -func (x *ClientInformationResponse) GetLogoUriLocalized() map[string]string { - if x != nil { - return x.LogoUriLocalized - } - return nil -} - -func (x *ClientInformationResponse) GetScope() string { - if x != nil && x.Scope != nil { - return *x.Scope - } - return "" -} - -func (x *ClientInformationResponse) GetContacts() []string { - if x != nil { - return x.Contacts - } - return nil -} - -func (x *ClientInformationResponse) GetTosUri() string { - if x != nil && x.TosUri != nil { - return *x.TosUri - } - return "" -} - -func (x *ClientInformationResponse) GetTosUriLocalized() map[string]string { - if x != nil { - return x.TosUriLocalized - } - return nil -} - -func (x *ClientInformationResponse) GetPolicyUri() string { - if x != nil && x.PolicyUri != nil { - return *x.PolicyUri - } - return "" -} - -func (x *ClientInformationResponse) GetPolicyUriLocalized() map[string]string { - if x != nil { - return x.PolicyUriLocalized - } - return nil -} - -func (x *ClientInformationResponse) GetJwksUri() string { - if x != nil && x.JwksUri != nil { - return *x.JwksUri - } - return "" -} - -func (x *ClientInformationResponse) GetJwks() *JsonWebKeySet { - if x != nil { - return x.Jwks - } - return nil -} - -func (x *ClientInformationResponse) GetSoftwareId() string { - if x != nil && x.SoftwareId != nil { - return *x.SoftwareId - } - return "" -} - -func (x *ClientInformationResponse) GetSoftwareVersion() string { - if x != nil && x.SoftwareVersion != nil { - return *x.SoftwareVersion - } - return "" -} - -func (x *ClientInformationResponse) GetSoftwareStatement() string { - if x != nil && x.SoftwareStatement != nil { - return *x.SoftwareStatement - } - return "" -} - -// Represents the error response from the Client Registration Endpoint (RFC 7591 -// Section 3.2.2). -type ClientRegistrationErrorResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // REQUIRED. Single ASCII error code string from the ErrorCode enum. - Error ErrorCode `protobuf:"varint,1,opt,name=error,proto3,enum=ietf.rfc7591.v1.ErrorCode" json:"error,omitempty"` - // OPTIONAL. Human-readable ASCII text description of the error. - ErrorDescription *string `protobuf:"bytes,2,opt,name=error_description,json=errorDescription,proto3,oneof" json:"error_description,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ClientRegistrationErrorResponse) Reset() { - *x = ClientRegistrationErrorResponse{} - mi := &file_types_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ClientRegistrationErrorResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientRegistrationErrorResponse) ProtoMessage() {} - -func (x *ClientRegistrationErrorResponse) ProtoReflect() protoreflect.Message { - mi := &file_types_proto_msgTypes[9] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ClientRegistrationErrorResponse.ProtoReflect.Descriptor instead. -func (*ClientRegistrationErrorResponse) Descriptor() ([]byte, []int) { - return file_types_proto_rawDescGZIP(), []int{9} -} - -func (x *ClientRegistrationErrorResponse) GetError() ErrorCode { - if x != nil { - return x.Error - } - return ErrorCode_ERROR_CODE_UNSPECIFIED -} - -func (x *ClientRegistrationErrorResponse) GetErrorDescription() string { - if x != nil && x.ErrorDescription != nil { - return *x.ErrorDescription - } - return "" -} - var File_types_proto protoreflect.FileDescriptor var file_types_proto_rawDesc = string([]byte{ @@ -1561,412 +946,21 @@ var file_types_proto_rawDesc = string([]byte{ 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xf5, 0x14, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x11, 0xba, 0x48, - 0x0e, 0x92, 0x01, 0x0b, 0x08, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, - 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x76, 0x0a, - 0x1a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, - 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x34, 0xba, 0x48, 0x31, 0x72, 0x2f, 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x52, 0x12, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x70, 0x6f, - 0x73, 0x74, 0x52, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x48, 0x00, 0x52, 0x17, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0xd7, 0x01, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0xb5, 0x01, 0xba, 0x48, - 0xb1, 0x01, 0x92, 0x01, 0xad, 0x01, 0x22, 0xaa, 0x01, 0x72, 0xa7, 0x01, 0x52, 0x12, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, - 0x52, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x2b, 0x75, 0x72, 0x6e, 0x3a, 0x69, 0x65, 0x74, - 0x66, 0x3a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x3a, 0x67, - 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x6a, 0x77, 0x74, 0x2d, 0x62, 0x65, - 0x61, 0x72, 0x65, 0x72, 0x52, 0x2d, 0x75, 0x72, 0x6e, 0x3a, 0x69, 0x65, 0x74, 0x66, 0x3a, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x3a, 0x67, 0x72, 0x61, 0x6e, - 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x73, 0x61, 0x6d, 0x6c, 0x32, 0x2d, 0x62, 0x65, 0x61, - 0x72, 0x65, 0x72, 0x52, 0x0a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, - 0x3e, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x17, 0xba, 0x48, 0x14, 0x92, 0x01, 0x11, 0x22, - 0x0f, 0x72, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, - 0x30, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, - 0x01, 0x12, 0xb1, 0x01, 0x0a, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x38, 0xba, 0x48, 0x35, 0x9a, 0x01, 0x32, 0x22, 0x27, - 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, - 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x52, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x75, 0x72, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0x88, 0x01, 0x01, 0x48, 0x02, 0x52, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, - 0x88, 0x01, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, - 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, - 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, - 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, - 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x12, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x03, - 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0xa6, 0x01, 0x0a, - 0x12, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x65, 0x74, 0x66, - 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xba, 0x48, 0x33, - 0x9a, 0x01, 0x30, 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, - 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x05, 0x72, 0x03, - 0x88, 0x01, 0x01, 0x52, 0x10, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x15, 0xba, 0x48, 0x12, 0x72, 0x10, 0x10, 0x01, 0x32, 0x0c, 0x5e, - 0x5c, 0x53, 0x2b, 0x28, 0x20, 0x5c, 0x53, 0x2b, 0x29, 0x2a, 0x24, 0x48, 0x04, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x63, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0c, 0xba, 0x48, 0x09, 0x92, 0x01, - 0x06, 0x22, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, - 0x73, 0x12, 0x26, 0x0a, 0x07, 0x74, 0x6f, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x05, 0x52, 0x06, - 0x74, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x11, 0x74, 0x6f, - 0x73, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, - 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, - 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, - 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x54, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, - 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, - 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x0f, - 0x74, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, - 0x2c, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x06, 0x52, - 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0xac, 0x01, - 0x0a, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x69, - 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, - 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x42, 0x36, 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, - 0x24, 0x2a, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x08, - 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, - 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x07, 0x52, 0x07, 0x6a, 0x77, 0x6b, 0x73, - 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x12, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, - 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x4b, 0x65, - 0x79, 0x53, 0x65, 0x74, 0x48, 0x08, 0x52, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x0b, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, - 0x48, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3a, 0x0a, 0x10, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x0a, 0x52, 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, - 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, - 0x12, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3c, 0xba, 0x48, 0x39, 0x72, 0x37, - 0x10, 0x01, 0x32, 0x33, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, - 0x2d, 0x5f, 0x5d, 0x2b, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5c, 0x2d, 0x5f, 0x5d, 0x2b, 0x5c, 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, 0x24, 0x48, 0x0b, 0x52, 0x11, 0x73, 0x6f, 0x66, 0x74, 0x77, - 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, - 0x46, 0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, - 0x0a, 0x15, 0x4c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, - 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x54, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, - 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0x8c, - 0x01, 0xba, 0x48, 0x88, 0x01, 0x1a, 0x85, 0x01, 0x0a, 0x31, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x75, 0x61, - 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x6a, 0x77, 0x6b, - 0x73, 0x5f, 0x75, 0x72, 0x69, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6a, 0x77, 0x6b, 0x73, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6d, 0x75, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x26, 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, - 0x2e, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x21, 0x68, - 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x77, 0x6b, 0x73, 0x29, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, - 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x6f, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6a, - 0x77, 0x6b, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x6f, 0x66, - 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0xf4, 0x18, 0x0a, 0x19, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, - 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x48, - 0x01, 0x52, 0x10, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x49, 0x73, 0x73, 0x75, 0x65, - 0x64, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, - 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, - 0x00, 0x48, 0x02, 0x52, 0x15, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, - 0x0d, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x42, 0x11, 0xba, 0x48, 0x0e, 0x92, 0x01, 0x0b, 0x08, 0x01, 0x22, 0x07, - 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x55, 0x72, 0x69, 0x73, 0x12, 0x76, 0x0a, 0x1a, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x34, 0xba, 0x48, 0x31, 0x72, 0x2f, - 0x52, 0x04, 0x6e, 0x6f, 0x6e, 0x65, 0x52, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x52, 0x13, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63, 0x48, - 0x03, 0x52, 0x17, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x41, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0xd7, 0x01, - 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x09, 0x42, 0xb5, 0x01, 0xba, 0x48, 0xb1, 0x01, 0x92, 0x01, 0xad, 0x01, 0x22, 0xaa, - 0x01, 0x72, 0xa7, 0x01, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x63, - 0x69, 0x74, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x12, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, - 0x52, 0x0d, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, - 0x2b, 0x75, 0x72, 0x6e, 0x3a, 0x69, 0x65, 0x74, 0x66, 0x3a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x3a, 0x6f, 0x61, 0x75, 0x74, 0x68, 0x3a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, - 0x65, 0x3a, 0x6a, 0x77, 0x74, 0x2d, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x52, 0x2d, 0x75, 0x72, - 0x6e, 0x3a, 0x69, 0x65, 0x74, 0x66, 0x3a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x3a, 0x6f, 0x61, - 0x75, 0x74, 0x68, 0x3a, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x73, - 0x61, 0x6d, 0x6c, 0x32, 0x2d, 0x62, 0x65, 0x61, 0x72, 0x65, 0x72, 0x52, 0x0a, 0x67, 0x72, 0x61, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x17, 0xba, 0x48, 0x14, 0x92, 0x01, 0x11, 0x22, 0x0f, 0x72, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x04, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0xb1, 0x01, 0x0a, 0x15, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x69, 0x65, 0x74, 0x66, - 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x38, - 0xba, 0x48, 0x35, 0x9a, 0x01, 0x32, 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x52, 0x13, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, - 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x05, 0x52, 0x09, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x14, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x69, 0x65, 0x74, - 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, - 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, - 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x12, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, - 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x6c, 0x6f, - 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, - 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x06, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, - 0x69, 0x88, 0x01, 0x01, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, - 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x40, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4c, 0x6f, - 0x67, 0x6f, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x42, 0x36, 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, 0x72, 0x25, 0x32, - 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, - 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, - 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x10, 0x6c, 0x6f, 0x67, - 0x6f, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x30, 0x0a, - 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x42, 0x15, 0xba, 0x48, - 0x12, 0x72, 0x10, 0x10, 0x01, 0x32, 0x0c, 0x5e, 0x5c, 0x53, 0x2b, 0x28, 0x20, 0x5c, 0x53, 0x2b, - 0x29, 0x2a, 0x24, 0x48, 0x07, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, - 0x09, 0x42, 0x0c, 0xba, 0x48, 0x09, 0x92, 0x01, 0x06, 0x22, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x07, 0x74, 0x6f, 0x73, - 0x5f, 0x75, 0x72, 0x69, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0x88, 0x01, 0x01, 0x48, 0x08, 0x52, 0x06, 0x74, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x88, 0x01, - 0x01, 0x12, 0xa3, 0x01, 0x0a, 0x11, 0x74, 0x6f, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, - 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x6f, 0x73, 0x55, 0x72, 0x69, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, - 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, - 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x0f, 0x74, 0x6f, 0x73, 0x55, 0x72, 0x69, 0x4c, 0x6f, - 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x2c, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0x88, 0x01, 0x01, 0x48, 0x09, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, - 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x5f, 0x75, 0x72, 0x69, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x14, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, - 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, - 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x36, 0xba, 0x48, 0x33, 0x9a, 0x01, 0x30, - 0x22, 0x27, 0x72, 0x25, 0x32, 0x23, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, - 0x31, 0x2c, 0x38, 0x7d, 0x28, 0x2d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, - 0x5d, 0x7b, 0x31, 0x2c, 0x38, 0x7d, 0x29, 0x2a, 0x24, 0x2a, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, - 0x52, 0x12, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x08, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, - 0x48, 0x0a, 0x52, 0x07, 0x6a, 0x77, 0x6b, 0x73, 0x55, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x37, - 0x0a, 0x04, 0x6a, 0x77, 0x6b, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x69, - 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x4a, - 0x73, 0x6f, 0x6e, 0x57, 0x65, 0x62, 0x4b, 0x65, 0x79, 0x53, 0x65, 0x74, 0x48, 0x0b, 0x52, 0x04, - 0x6a, 0x77, 0x6b, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0b, 0x73, 0x6f, 0x66, 0x74, 0x77, - 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, 0x0c, 0x52, 0x0a, 0x73, 0x6f, 0x66, 0x74, - 0x77, 0x61, 0x72, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x10, 0x73, 0x6f, 0x66, - 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, 0xff, 0x01, 0x48, - 0x0d, 0x52, 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x12, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, - 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x3c, 0xba, 0x48, 0x39, 0x72, 0x37, 0x10, 0x01, 0x32, 0x33, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5f, 0x5d, 0x2b, 0x5c, 0x2e, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5f, 0x5d, 0x2b, 0x5c, 0x2e, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x2d, 0x5f, 0x5d, 0x2a, 0x24, 0x48, - 0x0e, 0x52, 0x11, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x45, 0x0a, 0x17, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4c, 0x6f, 0x67, 0x6f, 0x55, 0x72, - 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x54, - 0x6f, 0x73, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x45, 0x0a, 0x17, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x55, 0x72, 0x69, 0x4c, 0x6f, 0x63, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a, 0xe4, 0x02, 0xba, 0x48, 0xe0, 0x02, 0x1a, 0xc5, 0x01, - 0x0a, 0x22, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x65, 0x78, - 0x70, 0x69, 0x72, 0x79, 0x12, 0x41, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x20, 0x69, - 0x73, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x69, 0x73, - 0x20, 0x69, 0x73, 0x73, 0x75, 0x65, 0x64, 0x1a, 0x5c, 0x28, 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, - 0x68, 0x69, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x20, 0x3d, 0x3d, 0x20, 0x27, 0x27, 0x29, 0x20, - 0x7c, 0x7c, 0x20, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x61, 0x74, 0x29, 0x1a, 0x95, 0x01, 0x0a, 0x2a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x6a, - 0x77, 0x6b, 0x73, 0x5f, 0x6d, 0x75, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x6a, 0x77, 0x6b, 0x73, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x61, - 0x72, 0x65, 0x20, 0x6d, 0x75, 0x74, 0x75, 0x61, 0x6c, 0x6c, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6c, - 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x26, 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, - 0x2e, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, 0x69, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x21, 0x68, - 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6a, 0x77, 0x6b, 0x73, 0x29, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x69, 0x73, - 0x73, 0x75, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x5f, 0x61, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x75, - 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x69, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x6f, - 0x73, 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x5f, 0x75, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x5f, 0x75, 0x72, - 0x69, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6a, 0x77, 0x6b, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, - 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, - 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x1f, 0x43, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x69, 0x65, 0x74, 0x66, - 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x43, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x04, - 0x10, 0x01, 0x20, 0x00, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3c, 0x0a, 0x11, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x18, - 0x80, 0x08, 0x48, 0x00, 0x52, 0x10, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x44, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, - 0xcd, 0x01, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, - 0x16, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, - 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x52, 0x49, 0x10, 0x01, 0x12, 0x26, - 0x0a, 0x22, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, - 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x44, 0x41, 0x54, 0x41, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x53, 0x4f, 0x46, - 0x54, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, - 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, - 0x55, 0x4e, 0x41, 0x50, 0x50, 0x52, 0x4f, 0x56, 0x45, 0x44, 0x5f, 0x53, 0x4f, 0x46, 0x54, 0x57, - 0x41, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x04, 0x42, - 0xd1, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, - 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x2f, 0x62, 0x75, 0x66, 0x2d, 0x65, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x72, 0x66, - 0x63, 0x37, 0x35, 0x39, 0x31, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x49, 0x52, 0x58, 0xaa, 0x02, 0x0f, - 0x49, 0x65, 0x74, 0x66, 0x2e, 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x0f, 0x49, 0x65, 0x74, 0x66, 0x5c, 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x5c, 0x56, - 0x31, 0xe2, 0x02, 0x1b, 0x49, 0x65, 0x74, 0x66, 0x5c, 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x11, 0x49, 0x65, 0x74, 0x66, 0x3a, 0x3a, 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x3a, - 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0xd1, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, + 0x69, 0x65, 0x74, 0x66, 0x2e, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x2e, 0x76, 0x31, 0x42, + 0x0a, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x50, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x75, 0x66, 0x62, 0x75, 0x69, + 0x6c, 0x64, 0x2f, 0x62, 0x75, 0x66, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x71, 0x75, + 0x69, 0x63, 0x6b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2d, 0x67, 0x6f, 0x2f, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x2f, 0x67, 0x65, 0x6e, 0x3b, 0x72, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x49, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x49, 0x65, 0x74, 0x66, 0x2e, 0x52, 0x66, 0x63, + 0x37, 0x35, 0x39, 0x31, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x49, 0x65, 0x74, 0x66, 0x5c, 0x52, + 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x49, 0x65, 0x74, 0x66, + 0x5c, 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x49, 0x65, 0x74, 0x66, 0x3a, 0x3a, + 0x52, 0x66, 0x63, 0x37, 0x35, 0x39, 0x31, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, }) var ( @@ -1981,66 +975,38 @@ func file_types_proto_rawDescGZIP() []byte { return file_types_proto_rawDescData } -var file_types_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_types_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_types_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_types_proto_goTypes = []any{ - (ErrorCode)(0), // 0: ietf.rfc7591.v1.ErrorCode - (*JsonWebKeySet)(nil), // 1: ietf.rfc7591.v1.JsonWebKeySet - (*JsonWebKey)(nil), // 2: ietf.rfc7591.v1.JsonWebKey - (*RsaKeyParameters)(nil), // 3: ietf.rfc7591.v1.RsaKeyParameters - (*EcKeyParameters)(nil), // 4: ietf.rfc7591.v1.EcKeyParameters - (*SymmetricKeyParameters)(nil), // 5: ietf.rfc7591.v1.SymmetricKeyParameters - (*OkpKeyParameters)(nil), // 6: ietf.rfc7591.v1.OkpKeyParameters - (*ClientMetadata)(nil), // 7: ietf.rfc7591.v1.ClientMetadata - (*ClientRegistrationRequest)(nil), // 8: ietf.rfc7591.v1.ClientRegistrationRequest - (*ClientInformationResponse)(nil), // 9: ietf.rfc7591.v1.ClientInformationResponse - (*ClientRegistrationErrorResponse)(nil), // 10: ietf.rfc7591.v1.ClientRegistrationErrorResponse - nil, // 11: ietf.rfc7591.v1.ClientMetadata.ClientNameLocalizedEntry - nil, // 12: ietf.rfc7591.v1.ClientMetadata.ClientUriLocalizedEntry - nil, // 13: ietf.rfc7591.v1.ClientMetadata.LogoUriLocalizedEntry - nil, // 14: ietf.rfc7591.v1.ClientMetadata.TosUriLocalizedEntry - nil, // 15: ietf.rfc7591.v1.ClientMetadata.PolicyUriLocalizedEntry - nil, // 16: ietf.rfc7591.v1.ClientRegistrationRequest.ClientNameLocalizedEntry - nil, // 17: ietf.rfc7591.v1.ClientRegistrationRequest.ClientUriLocalizedEntry - nil, // 18: ietf.rfc7591.v1.ClientRegistrationRequest.LogoUriLocalizedEntry - nil, // 19: ietf.rfc7591.v1.ClientRegistrationRequest.TosUriLocalizedEntry - nil, // 20: ietf.rfc7591.v1.ClientRegistrationRequest.PolicyUriLocalizedEntry - nil, // 21: ietf.rfc7591.v1.ClientInformationResponse.ClientNameLocalizedEntry - nil, // 22: ietf.rfc7591.v1.ClientInformationResponse.ClientUriLocalizedEntry - nil, // 23: ietf.rfc7591.v1.ClientInformationResponse.LogoUriLocalizedEntry - nil, // 24: ietf.rfc7591.v1.ClientInformationResponse.TosUriLocalizedEntry - nil, // 25: ietf.rfc7591.v1.ClientInformationResponse.PolicyUriLocalizedEntry + (*JsonWebKeySet)(nil), // 0: ietf.rfc7591.v1.JsonWebKeySet + (*JsonWebKey)(nil), // 1: ietf.rfc7591.v1.JsonWebKey + (*RsaKeyParameters)(nil), // 2: ietf.rfc7591.v1.RsaKeyParameters + (*EcKeyParameters)(nil), // 3: ietf.rfc7591.v1.EcKeyParameters + (*SymmetricKeyParameters)(nil), // 4: ietf.rfc7591.v1.SymmetricKeyParameters + (*OkpKeyParameters)(nil), // 5: ietf.rfc7591.v1.OkpKeyParameters + (*ClientMetadata)(nil), // 6: ietf.rfc7591.v1.ClientMetadata + nil, // 7: ietf.rfc7591.v1.ClientMetadata.ClientNameLocalizedEntry + nil, // 8: ietf.rfc7591.v1.ClientMetadata.ClientUriLocalizedEntry + nil, // 9: ietf.rfc7591.v1.ClientMetadata.LogoUriLocalizedEntry + nil, // 10: ietf.rfc7591.v1.ClientMetadata.TosUriLocalizedEntry + nil, // 11: ietf.rfc7591.v1.ClientMetadata.PolicyUriLocalizedEntry } var file_types_proto_depIdxs = []int32{ - 2, // 0: ietf.rfc7591.v1.JsonWebKeySet.keys:type_name -> ietf.rfc7591.v1.JsonWebKey - 3, // 1: ietf.rfc7591.v1.JsonWebKey.rsa_params:type_name -> ietf.rfc7591.v1.RsaKeyParameters - 4, // 2: ietf.rfc7591.v1.JsonWebKey.ec_params:type_name -> ietf.rfc7591.v1.EcKeyParameters - 5, // 3: ietf.rfc7591.v1.JsonWebKey.symmetric_params:type_name -> ietf.rfc7591.v1.SymmetricKeyParameters - 6, // 4: ietf.rfc7591.v1.JsonWebKey.okp_params:type_name -> ietf.rfc7591.v1.OkpKeyParameters - 11, // 5: ietf.rfc7591.v1.ClientMetadata.client_name_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.ClientNameLocalizedEntry - 12, // 6: ietf.rfc7591.v1.ClientMetadata.client_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.ClientUriLocalizedEntry - 13, // 7: ietf.rfc7591.v1.ClientMetadata.logo_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.LogoUriLocalizedEntry - 14, // 8: ietf.rfc7591.v1.ClientMetadata.tos_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.TosUriLocalizedEntry - 15, // 9: ietf.rfc7591.v1.ClientMetadata.policy_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.PolicyUriLocalizedEntry - 1, // 10: ietf.rfc7591.v1.ClientMetadata.jwks:type_name -> ietf.rfc7591.v1.JsonWebKeySet - 16, // 11: ietf.rfc7591.v1.ClientRegistrationRequest.client_name_localized:type_name -> ietf.rfc7591.v1.ClientRegistrationRequest.ClientNameLocalizedEntry - 17, // 12: ietf.rfc7591.v1.ClientRegistrationRequest.client_uri_localized:type_name -> ietf.rfc7591.v1.ClientRegistrationRequest.ClientUriLocalizedEntry - 18, // 13: ietf.rfc7591.v1.ClientRegistrationRequest.logo_uri_localized:type_name -> ietf.rfc7591.v1.ClientRegistrationRequest.LogoUriLocalizedEntry - 19, // 14: ietf.rfc7591.v1.ClientRegistrationRequest.tos_uri_localized:type_name -> ietf.rfc7591.v1.ClientRegistrationRequest.TosUriLocalizedEntry - 20, // 15: ietf.rfc7591.v1.ClientRegistrationRequest.policy_uri_localized:type_name -> ietf.rfc7591.v1.ClientRegistrationRequest.PolicyUriLocalizedEntry - 1, // 16: ietf.rfc7591.v1.ClientRegistrationRequest.jwks:type_name -> ietf.rfc7591.v1.JsonWebKeySet - 21, // 17: ietf.rfc7591.v1.ClientInformationResponse.client_name_localized:type_name -> ietf.rfc7591.v1.ClientInformationResponse.ClientNameLocalizedEntry - 22, // 18: ietf.rfc7591.v1.ClientInformationResponse.client_uri_localized:type_name -> ietf.rfc7591.v1.ClientInformationResponse.ClientUriLocalizedEntry - 23, // 19: ietf.rfc7591.v1.ClientInformationResponse.logo_uri_localized:type_name -> ietf.rfc7591.v1.ClientInformationResponse.LogoUriLocalizedEntry - 24, // 20: ietf.rfc7591.v1.ClientInformationResponse.tos_uri_localized:type_name -> ietf.rfc7591.v1.ClientInformationResponse.TosUriLocalizedEntry - 25, // 21: ietf.rfc7591.v1.ClientInformationResponse.policy_uri_localized:type_name -> ietf.rfc7591.v1.ClientInformationResponse.PolicyUriLocalizedEntry - 1, // 22: ietf.rfc7591.v1.ClientInformationResponse.jwks:type_name -> ietf.rfc7591.v1.JsonWebKeySet - 0, // 23: ietf.rfc7591.v1.ClientRegistrationErrorResponse.error:type_name -> ietf.rfc7591.v1.ErrorCode - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 1, // 0: ietf.rfc7591.v1.JsonWebKeySet.keys:type_name -> ietf.rfc7591.v1.JsonWebKey + 2, // 1: ietf.rfc7591.v1.JsonWebKey.rsa_params:type_name -> ietf.rfc7591.v1.RsaKeyParameters + 3, // 2: ietf.rfc7591.v1.JsonWebKey.ec_params:type_name -> ietf.rfc7591.v1.EcKeyParameters + 4, // 3: ietf.rfc7591.v1.JsonWebKey.symmetric_params:type_name -> ietf.rfc7591.v1.SymmetricKeyParameters + 5, // 4: ietf.rfc7591.v1.JsonWebKey.okp_params:type_name -> ietf.rfc7591.v1.OkpKeyParameters + 7, // 5: ietf.rfc7591.v1.ClientMetadata.client_name_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.ClientNameLocalizedEntry + 8, // 6: ietf.rfc7591.v1.ClientMetadata.client_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.ClientUriLocalizedEntry + 9, // 7: ietf.rfc7591.v1.ClientMetadata.logo_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.LogoUriLocalizedEntry + 10, // 8: ietf.rfc7591.v1.ClientMetadata.tos_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.TosUriLocalizedEntry + 11, // 9: ietf.rfc7591.v1.ClientMetadata.policy_uri_localized:type_name -> ietf.rfc7591.v1.ClientMetadata.PolicyUriLocalizedEntry + 0, // 10: ietf.rfc7591.v1.ClientMetadata.jwks:type_name -> ietf.rfc7591.v1.JsonWebKeySet + 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_types_proto_init() } @@ -2055,22 +1021,18 @@ func file_types_proto_init() { (*JsonWebKey_OkpParams)(nil), } file_types_proto_msgTypes[6].OneofWrappers = []any{} - file_types_proto_msgTypes[7].OneofWrappers = []any{} - file_types_proto_msgTypes[8].OneofWrappers = []any{} - file_types_proto_msgTypes[9].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_types_proto_rawDesc), len(file_types_proto_rawDesc)), - NumEnums: 1, - NumMessages: 25, + NumEnums: 0, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, GoTypes: file_types_proto_goTypes, DependencyIndexes: file_types_proto_depIdxs, - EnumInfos: file_types_proto_enumTypes, MessageInfos: file_types_proto_msgTypes, }.Build() File_types_proto = out.File diff --git a/internal/rfc7591/types.proto b/internal/rfc7591/types.proto index 8a598c706..0eaae1953 100644 --- a/internal/rfc7591/types.proto +++ b/internal/rfc7591/types.proto @@ -285,263 +285,3 @@ message ClientMetadata { // types" // }; } - -// Represents the request sent to the Client Registration Endpoint (RFC 7591 -// Section 3.1). -message ClientRegistrationRequest { - // Fields correspond to ClientMetadata, indicating requested values. - // REQUIRED for redirect flows. - repeated string redirect_uris = 1 [ (buf.validate.field).repeated = { - min_items : 1, - items : {string : {uri : true, min_len : 1}} - } ]; - // OPTIONAL. Default is "client_secret_basic". - optional string token_endpoint_auth_method = 2 - [ (buf.validate.field).string = { - in : [ "none", "client_secret_post", "client_secret_basic" ] - } ]; - // OPTIONAL. Default is ["authorization_code"]. - repeated string grant_types = 3 - [ (buf.validate.field).repeated .items.string = { - in : [ - "authorization_code", - "implicit", - "password", - "client_credentials", - "refresh_token", - "urn:ietf:params:oauth:grant-type:jwt-bearer", - "urn:ietf:params:oauth:grant-type:saml2-bearer" - ] - } ]; - // OPTIONAL. Default is ["code"]. - repeated string response_types = 4 [ - (buf.validate.field).repeated .items.string = {in : [ "code", "token" ]} - ]; - // OPTIONAL. RECOMMENDED. - optional string client_name = 5 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - // OPTIONAL. - map client_name_localized = 6 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {min_len : 1, max_len : 255}} - } ]; - // OPTIONAL. RECOMMENDED. - optional string client_uri = 7 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL. - map client_uri_localized = 8 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL. - optional string logo_uri = 9 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL. - map logo_uri_localized = 10 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL. - optional string scope = 11 [ - (buf.validate.field).string = {pattern : "^\\S+( \\S+)*$", min_len : 1} - ]; - // OPTIONAL. - repeated string contacts = 12 - [ (buf.validate.field).repeated .items.string.email = true ]; - // OPTIONAL. - optional string tos_uri = 13 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL. - map tos_uri_localized = 14 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL. - optional string policy_uri = 15 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL. - map policy_uri_localized = 16 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL. Mutually exclusive with `jwks`. - optional string jwks_uri = 17 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL. Mutually exclusive with `jwks_uri`. - optional JsonWebKeySet jwks = 18; - // OPTIONAL. - optional string software_id = 19 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - // OPTIONAL. - optional string software_version = 20 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - - // OPTIONAL. A software statement containing client metadata values about the - // client software as claims. - optional string software_statement = 21 [ (buf.validate.field).string = { - min_len : 1, - pattern : "^[a-zA-Z0-9\\-_]+\\.[a-zA-Z0-9\\-_]+\\.[a-zA-Z0-9\\-_]*$" - } ]; - - // Message level validation to ensure mutual exclusion of jwks and jwks_uri. - option (buf.validate.message).cel = { - id : "client_registration_request.jwks_mutual_exclusion", - expression : "!has(this.jwks_uri) || !has(this.jwks)", - message : "jwks_uri and jwks are mutually exclusive" - }; -} - -// Represents the successful response from the Client Registration Endpoint (RFC -// 7591 Section 3.2.1). -message ClientInformationResponse { - // REQUIRED. OAuth 2.0 client identifier string issued by the authorization - // server. - string client_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - - // OPTIONAL. OAuth 2.0 client secret string. Only issued for confidential - // clients. - optional string client_secret = 2 [ (buf.validate.field).string.min_len = 1 ]; - - // OPTIONAL. Time at which the client identifier was issued (Unix timestamp, - // seconds since epoch). - optional int64 client_id_issued_at = 3 [ (buf.validate.field).int64.gt = 0 ]; - - // REQUIRED if "client_secret" is issued, OPTIONAL otherwise. Time at which - // the client secret will expire (Unix timestamp, seconds since epoch), or 0 - // if it will not expire. - optional int64 client_secret_expires_at = 4 - [ (buf.validate.field).int64.gte = 0 ]; - - // Contains all registered metadata about this client, reflecting server - // state. REQUIRED if applicable to the client registration. - repeated string redirect_uris = 5 [ (buf.validate.field).repeated = { - min_items : 1, - items : {string : {uri : true, min_len : 1}} - } ]; - // OPTIONAL (reflects registered value, may have default). - optional string token_endpoint_auth_method = 6 - [ (buf.validate.field).string = { - in : [ "none", "client_secret_post", "client_secret_basic" ] - } ]; - // OPTIONAL (reflects registered value, may have default). - repeated string grant_types = 7 - [ (buf.validate.field).repeated .items.string = { - in : [ - "authorization_code", - "implicit", - "password", - "client_credentials", - "refresh_token", - "urn:ietf:params:oauth:grant-type:jwt-bearer", - "urn:ietf:params:oauth:grant-type:saml2-bearer" - ] - } ]; - // OPTIONAL (reflects registered value, may have default). - repeated string response_types = 8 [ - (buf.validate.field).repeated .items.string = {in : [ "code", "token" ]} - ]; - // OPTIONAL (reflects registered value). - optional string client_name = 9 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - // OPTIONAL (reflects registered value). - map client_name_localized = 10 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {min_len : 1, max_len : 255}} - } ]; - // OPTIONAL (reflects registered value). - optional string client_uri = 11 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL (reflects registered value). - map client_uri_localized = 12 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL (reflects registered value). - optional string logo_uri = 13 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL (reflects registered value). - map logo_uri_localized = 14 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL (reflects registered value). - optional string scope = 15 [ - (buf.validate.field).string = {pattern : "^\\S+( \\S+)*$", min_len : 1} - ]; - // OPTIONAL (reflects registered value). - repeated string contacts = 16 - [ (buf.validate.field).repeated .items.string.email = true ]; - // OPTIONAL (reflects registered value). - optional string tos_uri = 17 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL (reflects registered value). - map tos_uri_localized = 18 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL (reflects registered value). - optional string policy_uri = 19 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL (reflects registered value). - map policy_uri_localized = 20 [ (buf.validate.field).map = { - keys : {string : {pattern : "^[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*$"}}, - values : {string : {uri : true}} - } ]; - // OPTIONAL (reflects registered value). Mutually exclusive with `jwks`. - optional string jwks_uri = 21 [ (buf.validate.field).string.uri = true ]; - // OPTIONAL (reflects registered value). Mutually exclusive with `jwks_uri`. - optional JsonWebKeySet jwks = 22; - // OPTIONAL (reflects registered value). - optional string software_id = 23 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - // OPTIONAL (reflects registered value). - optional string software_version = 24 - [ (buf.validate.field).string = {min_len : 1, max_len : 255} ]; - - // OPTIONAL. If a software statement was used in the request, it MUST be - // returned unmodified. - optional string software_statement = 25 [ (buf.validate.field).string = { - min_len : 1, - pattern : "^[a-zA-Z0-9\\-_]+\\.[a-zA-Z0-9\\-_]+\\.[a-zA-Z0-9\\-_]*$" - } ]; - - // Message level validation - option (buf.validate.message).cel = { - id : "client_info_response.secret_expiry", - // client_secret_expires_at MUST be present if client_secret is present and - // non-empty - expression : "(!has(this.client_secret) || this.client_secret == '') || " - "has(this.client_secret_expires_at)", - message : "client_secret_expires_at is required when client_secret is " - "issued" - }; - option (buf.validate.message).cel = { - id : "client_info_response.jwks_mutual_exclusion", - expression : "!has(this.jwks_uri) || !has(this.jwks)", - message : "jwks_uri and jwks fields are mutually exclusive in the response" - }; -} - -// Standard error codes for client registration errors (RFC 7591 Section 3.2.2). -enum ErrorCode { - ERROR_CODE_UNSPECIFIED = 0; - // The value of one or more redirection URIs is invalid. - ERROR_CODE_INVALID_REDIRECT_URI = 1; - // The value of one of the client metadata fields is invalid. - ERROR_CODE_INVALID_CLIENT_METADATA = 2; - // The software statement presented is invalid. - ERROR_CODE_INVALID_SOFTWARE_STATEMENT = 3; - // The software statement presented is not approved for use by this server. - ERROR_CODE_UNAPPROVED_SOFTWARE_STATEMENT = 4; -} - -// Represents the error response from the Client Registration Endpoint (RFC 7591 -// Section 3.2.2). -message ClientRegistrationErrorResponse { - // REQUIRED. Single ASCII error code string from the ErrorCode enum. - ErrorCode error = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).enum = { - defined_only : true, - not_in : [ 0 ] - } - ]; - - // OPTIONAL. Human-readable ASCII text description of the error. - optional string error_description = 2 - [ (buf.validate.field).string = {min_len : 1, max_len : 1024} ]; -}