feat: Add MsgRegisterService to handle service registration

The commit message for these changes would be:

feat: Add MsgRegisterService to handle service registration

This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key.

The changes include:

- Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes
- Adding the `MsgRegisterServiceResponse` message type to handle the response
- Updating the Msg service to include a new `RegisterService` RPC method
- Implementing the `RegisterService` method in the keeper

This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality.
This commit is contained in:
Prad Nukala 2024-08-10 15:24:22 -04:00 committed by Prad Nukala (aider)
parent f91107d88e
commit 24db9de0ad
9 changed files with 5555 additions and 2457 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -19,9 +19,10 @@ import (
const _ = grpc.SupportPackageIsVersion7
const (
Msg_UpdateParams_FullMethodName = "/did.v1.Msg/UpdateParams"
Msg_RegisterController_FullMethodName = "/did.v1.Msg/RegisterController"
Msg_AuthenticateController_FullMethodName = "/did.v1.Msg/AuthenticateController"
Msg_UpdateParams_FullMethodName = "/did.v1.Msg/UpdateParams"
Msg_Authenticate_FullMethodName = "/did.v1.Msg/Authenticate"
Msg_RegisterController_FullMethodName = "/did.v1.Msg/RegisterController"
Msg_RegisterService_FullMethodName = "/did.v1.Msg/RegisterService"
)
// MsgClient is the client API for Msg service.
@ -32,10 +33,12 @@ type MsgClient interface {
//
// Since: cosmos-sdk 0.47
UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error)
// Authenticate asserts the given controller is the owner of the given address.
Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error)
// RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias.
RegisterController(ctx context.Context, in *MsgInitializeController, opts ...grpc.CallOption) (*MsgInitializeControllerResponse, error)
// AuthenticateController asserts the given controller is the owner of the given address.
AuthenticateController(ctx context.Context, in *MsgAuthenticateController, opts ...grpc.CallOption) (*MsgAuthenticateControllerResponse, error)
RegisterController(ctx context.Context, in *MsgRegisterController, opts ...grpc.CallOption) (*MsgRegisterControllerResponse, error)
// RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key.
RegisterService(ctx context.Context, in *MsgRegisterService, opts ...grpc.CallOption) (*MsgRegisterServiceResponse, error)
}
type msgClient struct {
@ -55,8 +58,17 @@ func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts
return out, nil
}
func (c *msgClient) RegisterController(ctx context.Context, in *MsgInitializeController, opts ...grpc.CallOption) (*MsgInitializeControllerResponse, error) {
out := new(MsgInitializeControllerResponse)
func (c *msgClient) Authenticate(ctx context.Context, in *MsgAuthenticate, opts ...grpc.CallOption) (*MsgAuthenticateResponse, error) {
out := new(MsgAuthenticateResponse)
err := c.cc.Invoke(ctx, Msg_Authenticate_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *msgClient) RegisterController(ctx context.Context, in *MsgRegisterController, opts ...grpc.CallOption) (*MsgRegisterControllerResponse, error) {
out := new(MsgRegisterControllerResponse)
err := c.cc.Invoke(ctx, Msg_RegisterController_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
@ -64,9 +76,9 @@ func (c *msgClient) RegisterController(ctx context.Context, in *MsgInitializeCon
return out, nil
}
func (c *msgClient) AuthenticateController(ctx context.Context, in *MsgAuthenticateController, opts ...grpc.CallOption) (*MsgAuthenticateControllerResponse, error) {
out := new(MsgAuthenticateControllerResponse)
err := c.cc.Invoke(ctx, Msg_AuthenticateController_FullMethodName, in, out, opts...)
func (c *msgClient) RegisterService(ctx context.Context, in *MsgRegisterService, opts ...grpc.CallOption) (*MsgRegisterServiceResponse, error) {
out := new(MsgRegisterServiceResponse)
err := c.cc.Invoke(ctx, Msg_RegisterService_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
@ -81,10 +93,12 @@ type MsgServer interface {
//
// Since: cosmos-sdk 0.47
UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error)
// Authenticate asserts the given controller is the owner of the given address.
Authenticate(context.Context, *MsgAuthenticate) (*MsgAuthenticateResponse, error)
// RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias.
RegisterController(context.Context, *MsgInitializeController) (*MsgInitializeControllerResponse, error)
// AuthenticateController asserts the given controller is the owner of the given address.
AuthenticateController(context.Context, *MsgAuthenticateController) (*MsgAuthenticateControllerResponse, error)
RegisterController(context.Context, *MsgRegisterController) (*MsgRegisterControllerResponse, error)
// RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key.
RegisterService(context.Context, *MsgRegisterService) (*MsgRegisterServiceResponse, error)
mustEmbedUnimplementedMsgServer()
}
@ -95,11 +109,14 @@ type UnimplementedMsgServer struct {
func (UnimplementedMsgServer) UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented")
}
func (UnimplementedMsgServer) RegisterController(context.Context, *MsgInitializeController) (*MsgInitializeControllerResponse, error) {
func (UnimplementedMsgServer) Authenticate(context.Context, *MsgAuthenticate) (*MsgAuthenticateResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Authenticate not implemented")
}
func (UnimplementedMsgServer) RegisterController(context.Context, *MsgRegisterController) (*MsgRegisterControllerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RegisterController not implemented")
}
func (UnimplementedMsgServer) AuthenticateController(context.Context, *MsgAuthenticateController) (*MsgAuthenticateControllerResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method AuthenticateController not implemented")
func (UnimplementedMsgServer) RegisterService(context.Context, *MsgRegisterService) (*MsgRegisterServiceResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method RegisterService not implemented")
}
func (UnimplementedMsgServer) mustEmbedUnimplementedMsgServer() {}
@ -132,8 +149,26 @@ func _Msg_UpdateParams_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Msg_Authenticate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgAuthenticate)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).Authenticate(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Msg_Authenticate_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).Authenticate(ctx, req.(*MsgAuthenticate))
}
return interceptor(ctx, in, info, handler)
}
func _Msg_RegisterController_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgInitializeController)
in := new(MsgRegisterController)
if err := dec(in); err != nil {
return nil, err
}
@ -145,25 +180,25 @@ func _Msg_RegisterController_Handler(srv interface{}, ctx context.Context, dec f
FullMethod: Msg_RegisterController_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).RegisterController(ctx, req.(*MsgInitializeController))
return srv.(MsgServer).RegisterController(ctx, req.(*MsgRegisterController))
}
return interceptor(ctx, in, info, handler)
}
func _Msg_AuthenticateController_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgAuthenticateController)
func _Msg_RegisterService_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(MsgRegisterService)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(MsgServer).AuthenticateController(ctx, in)
return srv.(MsgServer).RegisterService(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Msg_AuthenticateController_FullMethodName,
FullMethod: Msg_RegisterService_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(MsgServer).AuthenticateController(ctx, req.(*MsgAuthenticateController))
return srv.(MsgServer).RegisterService(ctx, req.(*MsgRegisterService))
}
return interceptor(ctx, in, info, handler)
}
@ -179,13 +214,17 @@ var Msg_ServiceDesc = grpc.ServiceDesc{
MethodName: "UpdateParams",
Handler: _Msg_UpdateParams_Handler,
},
{
MethodName: "Authenticate",
Handler: _Msg_Authenticate_Handler,
},
{
MethodName: "RegisterController",
Handler: _Msg_RegisterController_Handler,
},
{
MethodName: "AuthenticateController",
Handler: _Msg_AuthenticateController_Handler,
MethodName: "RegisterService",
Handler: _Msg_RegisterService_Handler,
},
},
Streams: []grpc.StreamDesc{},

3
client/go.mod Normal file
View File

@ -0,0 +1,3 @@
module client
go 1.22.0

View File

@ -5,6 +5,7 @@ option go_package = "github.com/onsonr/hway/x/did/types";
import "cosmos/orm/v1/orm.proto";
import "did/v1/genesis.proto";
import "did/v1/enums.proto";
// Aliases represents the `alsoKnownAs` property associated with a DID Controller
message Aliases {
@ -146,9 +147,15 @@ message Service {
// The type of the service
string service_type = 2;
// The service endpoint
string service_endpoint = 3;
// The controller DID of the service
string controller_did = 4;
string controller_did = 3;
// The domain name of the service
string origin_uri = 4;
// The service endpoint
map<string, string> service_endpoints = 5;
// Scopes is the Authorization Grants of the service
repeated PermissionScope scopes = 6;
}

View File

@ -3,6 +3,7 @@ syntax = "proto3";
package did.v1;
import "cosmos/msg/v1/msg.proto";
import "did/v1/enums.proto";
import "did/v1/genesis.proto";
import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";
@ -16,11 +17,14 @@ service Msg {
// Since: cosmos-sdk 0.47
rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse);
// RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias.
rpc RegisterController(MsgInitializeController) returns (MsgInitializeControllerResponse);
// Authenticate asserts the given controller is the owner of the given address.
rpc Authenticate(MsgAuthenticate) returns (MsgAuthenticateResponse);
// AuthenticateController asserts the given controller is the owner of the given address.
rpc AuthenticateController(MsgAuthenticateController) returns (MsgAuthenticateControllerResponse);
// RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias.
rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse);
// RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key.
rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse);
}
// MsgUpdateParams is the Msg/UpdateParams request type.
@ -44,31 +48,8 @@ message MsgUpdateParams {
// Since: cosmos-sdk 0.47
message MsgUpdateParamsResponse {}
// MsgInitializeController is the message type for the InitializeController RPC.
message MsgInitializeController {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address of the governance account.
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Assertions is the list of assertions to initialize the controller with.
repeated bytes assertions = 2;
// Keyshares is the list of keyshares to initialize the controller with.
repeated bytes keyshares = 3;
// Verifications is the list of verifications to initialize the controller with.
repeated bytes verifications = 4;
}
// MsgInitializeControllerResponse is the response type for the InitializeController RPC.
message MsgInitializeControllerResponse {
// Controller is the address of the initialized controller.
string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
// MsgAuthenticate is the message type for the Authenticate RPC.
message MsgAuthenticateController {
message MsgAuthenticate {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address of the governance account.
@ -84,6 +65,50 @@ message MsgAuthenticateController {
string origin = 4;
}
// MsgAuthenticateControllerResponse is the response type for the Authenticate RPC.
message MsgAuthenticateControllerResponse {}
// MsgAuthenticateResponse is the response type for the Authenticate RPC.
message MsgAuthenticateResponse {}
// MsgRegisterController is the message type for the InitializeController RPC.
message MsgRegisterController {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address of the governance account.
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Assertions is the list of assertions to initialize the controller with.
repeated bytes assertions = 2;
// Keyshares is the list of keyshares to initialize the controller with.
repeated bytes keyshares = 3;
// Verifications is the list of verifications to initialize the controller with.
repeated bytes verifications = 4;
}
// MsgRegisterControllerResponse is the response type for the InitializeController RPC.
message MsgRegisterControllerResponse {
// Controller is the address of the initialized controller.
string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Accounts are a Address Map and Supported coin Denoms for the controller
map<string, string> accounts = 2;
}
// MsgRegisterService is the message type for the RegisterService RPC.
message MsgRegisterService {
option (cosmos.msg.v1.signer) = "authority";
// authority is the address of the governance account.
string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// origin is the origin of the request in wildcard form.
string origin_uri = 2;
// PermissionScope is the scope of the service.
repeated PermissionScope scopes = 3;
}
// MsgRegisterServiceResponse is the response type for the RegisterService RPC.
message MsgRegisterServiceResponse {
bool success = 1;
}

View File

@ -29,16 +29,23 @@ func (ms msgServer) UpdateParams(ctx context.Context, msg *types.MsgUpdateParams
return nil, ms.k.Params.Set(ctx, msg.Params)
}
// AuthenticateController implements types.MsgServer.
func (ms msgServer) AuthenticateController(ctx context.Context, msg *types.MsgAuthenticateController) (*types.MsgAuthenticateControllerResponse, error) {
// ctx := sdk.UnwrapSDKContext(goCtx)
panic("AuthenticateController is unimplemented")
return &types.MsgAuthenticateControllerResponse{}, nil
}
// RegisterController implements types.MsgServer.
func (ms msgServer) RegisterController(ctx context.Context, msg *types.MsgInitializeController) (*types.MsgInitializeControllerResponse, error) {
func (ms msgServer) RegisterController(ctx context.Context, msg *types.MsgRegisterController) (*types.MsgRegisterControllerResponse, error) {
// ctx := sdk.UnwrapSDKContext(goCtx)
panic("RegisterController is unimplemented")
return &types.MsgInitializeControllerResponse{}, nil
return &types.MsgRegisterControllerResponse{}, nil
}
// Authenticate implements types.MsgServer.
func (ms msgServer) Authenticate(ctx context.Context, msg *types.MsgAuthenticate) (*types.MsgAuthenticateResponse, error) {
// ctx := sdk.UnwrapSDKContext(goCtx)
panic("Authenticate is unimplemented")
return &types.MsgAuthenticateResponse{}, nil
}
// RegisterService implements types.MsgServer.
func (ms msgServer) RegisterService(ctx context.Context, msg *types.MsgRegisterService) (*types.MsgRegisterServiceResponse, error) {
// ctx := sdk.UnwrapSDKContext(goCtx)
panic("RegisterService is unimplemented")
return &types.MsgRegisterServiceResponse{}, nil
}

View File

@ -466,10 +466,14 @@ type Service struct {
Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
// The type of the service
ServiceType string `protobuf:"bytes,2,opt,name=service_type,json=serviceType,proto3" json:"service_type,omitempty"`
// The service endpoint
ServiceEndpoint string `protobuf:"bytes,3,opt,name=service_endpoint,json=serviceEndpoint,proto3" json:"service_endpoint,omitempty"`
// The controller DID of the service
ControllerDid string `protobuf:"bytes,4,opt,name=controller_did,json=controllerDid,proto3" json:"controller_did,omitempty"`
ControllerDid string `protobuf:"bytes,3,opt,name=controller_did,json=controllerDid,proto3" json:"controller_did,omitempty"`
// The domain name of the service
OriginUri string `protobuf:"bytes,4,opt,name=origin_uri,json=originUri,proto3" json:"origin_uri,omitempty"`
// The service endpoint
ServiceEndpoints map[string]string `protobuf:"bytes,5,rep,name=service_endpoints,json=serviceEndpoints,proto3" json:"service_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Scopes is the Authorization Grants of the service
Scopes []PermissionScope `protobuf:"varint,6,rep,packed,name=scopes,proto3,enum=did.v1.PermissionScope" json:"scopes,omitempty"`
}
func (m *Service) Reset() { *m = Service{} }
@ -519,13 +523,6 @@ func (m *Service) GetServiceType() string {
return ""
}
func (m *Service) GetServiceEndpoint() string {
if m != nil {
return m.ServiceEndpoint
}
return ""
}
func (m *Service) GetControllerDid() string {
if m != nil {
return m.ControllerDid
@ -533,6 +530,27 @@ func (m *Service) GetControllerDid() string {
return ""
}
func (m *Service) GetOriginUri() string {
if m != nil {
return m.OriginUri
}
return ""
}
func (m *Service) GetServiceEndpoints() map[string]string {
if m != nil {
return m.ServiceEndpoints
}
return nil
}
func (m *Service) GetScopes() []PermissionScope {
if m != nil {
return m.Scopes
}
return nil
}
func init() {
proto.RegisterType((*Aliases)(nil), "did.v1.Aliases")
proto.RegisterType((*Assertion)(nil), "did.v1.Assertion")
@ -542,55 +560,61 @@ func init() {
proto.RegisterType((*Delegation)(nil), "did.v1.Delegation")
proto.RegisterMapType((map[string]string)(nil), "did.v1.Delegation.PublicKeyJwksEntry")
proto.RegisterType((*Service)(nil), "did.v1.Service")
proto.RegisterMapType((map[string]string)(nil), "did.v1.Service.ServiceEndpointsEntry")
}
func init() { proto.RegisterFile("did/v1/state.proto", fileDescriptor_f44bb702879c34b4) }
var fileDescriptor_f44bb702879c34b4 = []byte{
// 685 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0x3f, 0x6f, 0x13, 0x4d,
0x10, 0xc6, 0x73, 0x3e, 0xff, 0x1d, 0xdb, 0x89, 0xb5, 0x8a, 0xf2, 0xde, 0x6b, 0xc0, 0x18, 0xa3,
0x48, 0xa1, 0xb1, 0x09, 0x34, 0x28, 0xa1, 0xc0, 0x24, 0x29, 0x00, 0x45, 0x42, 0x86, 0x8a, 0xc6,
0x5a, 0x7b, 0x37, 0xf6, 0xe2, 0xf3, 0xee, 0x69, 0x77, 0xed, 0xe4, 0x3a, 0x7a, 0x24, 0x44, 0x41,
0x9d, 0x96, 0x92, 0xaf, 0x41, 0x19, 0x89, 0x86, 0x12, 0x25, 0xdf, 0x80, 0x4f, 0x80, 0xf6, 0xf6,
0x1c, 0x1f, 0x76, 0x00, 0x21, 0xba, 0xec, 0x33, 0x33, 0x99, 0xdf, 0x3c, 0x33, 0x3e, 0x40, 0x84,
0x91, 0xd6, 0x74, 0xbb, 0xa5, 0x34, 0xd6, 0xb4, 0x19, 0x48, 0xa1, 0x05, 0xca, 0x12, 0x46, 0x9a,
0xd3, 0xed, 0xea, 0x7f, 0x7d, 0xa1, 0xc6, 0x42, 0xb5, 0x84, 0x1c, 0x9b, 0x14, 0x21, 0xc7, 0x36,
0xa1, 0xba, 0x1e, 0x17, 0x0d, 0x28, 0xa7, 0x8a, 0x29, 0xab, 0x36, 0x3e, 0x3a, 0x90, 0x6b, 0xfb,
0x0c, 0x2b, 0xaa, 0xd0, 0x2a, 0xa4, 0x18, 0xf1, 0x9c, 0xba, 0xb3, 0x55, 0xe8, 0xa4, 0x18, 0x41,
0x1b, 0x90, 0x15, 0x92, 0x0d, 0x18, 0xf7, 0x52, 0x91, 0x16, 0xbf, 0x8c, 0x3e, 0xc4, 0x9c, 0xf8,
0xd4, 0x73, 0xad, 0x6e, 0x5f, 0xa8, 0x06, 0xd0, 0x17, 0x5c, 0x4b, 0xe1, 0xfb, 0x54, 0x7a, 0xe9,
0x28, 0x96, 0x50, 0x4c, 0x9c, 0x9e, 0x04, 0x4c, 0x62, 0xcd, 0x04, 0xf7, 0x32, 0x75, 0x67, 0x2b,
0xdd, 0x49, 0x28, 0x3b, 0xd7, 0xbf, 0x9f, 0x7e, 0x79, 0xe7, 0x6e, 0x40, 0xda, 0x70, 0xa0, 0xd2,
0xac, 0x4b, 0xc5, 0xf1, 0x1c, 0xcf, 0x69, 0xbc, 0x49, 0x41, 0xa1, 0xad, 0x14, 0x95, 0x26, 0x77,
0x89, 0xf5, 0x7f, 0xc8, 0x8f, 0x68, 0xd8, 0xd5, 0x61, 0x40, 0x63, 0xda, 0xdc, 0x88, 0x86, 0x2f,
0xc3, 0xc0, 0x62, 0x49, 0x4a, 0x28, 0xd7, 0x0c, 0xfb, 0x11, 0x72, 0xa9, 0x93, 0x50, 0xd0, 0x2e,
0xe4, 0xc7, 0x54, 0x63, 0x82, 0x35, 0xf6, 0xd2, 0x75, 0x77, 0xab, 0x78, 0xef, 0x66, 0xd3, 0x9a,
0xd9, 0xbc, 0xec, 0xd7, 0x3c, 0x8c, 0x33, 0x0e, 0xb8, 0x96, 0x61, 0xe7, 0xb2, 0x60, 0x61, 0xe6,
0xcc, 0xe2, 0xcc, 0xd5, 0x5d, 0x28, 0xff, 0x54, 0x8a, 0x2a, 0xe0, 0x8e, 0x68, 0x18, 0x93, 0x9b,
0x3f, 0xd1, 0x3a, 0x64, 0xa6, 0xd8, 0x9f, 0xcc, 0xb8, 0xed, 0x63, 0x27, 0xf5, 0xc0, 0xd9, 0x59,
0x8d, 0x0c, 0xc9, 0x5b, 0x43, 0xbc, 0x54, 0xe3, 0x83, 0x03, 0xc5, 0xb6, 0xd6, 0xd4, 0xec, 0xfd,
0x2f, 0x4d, 0xb8, 0x6c, 0xe2, 0x26, 0x9a, 0x18, 0x35, 0x90, 0x42, 0x1c, 0xc5, 0xcb, 0xb2, 0x8f,
0x3f, 0xcd, 0xb4, 0x80, 0xe5, 0x36, 0x3e, 0x39, 0x00, 0x7b, 0xf3, 0x35, 0x2f, 0x52, 0x55, 0xc0,
0x25, 0x06, 0xdf, 0x4e, 0x4c, 0x18, 0x41, 0x77, 0x61, 0x3d, 0x98, 0xf4, 0x7c, 0xd6, 0xef, 0x1a,
0xdc, 0xf1, 0xc4, 0xd7, 0xac, 0x87, 0xd5, 0x8c, 0x0d, 0xd9, 0xd8, 0x33, 0x1a, 0x1e, 0xce, 0x22,
0xe8, 0x1a, 0x14, 0xa6, 0x78, 0xe2, 0xeb, 0x6e, 0x9f, 0x91, 0x18, 0x36, 0x1f, 0x09, 0x7b, 0x8c,
0xa0, 0x3a, 0x14, 0x8f, 0x18, 0x1f, 0x50, 0x19, 0x48, 0xc6, 0x75, 0x04, 0x5c, 0xea, 0x24, 0xa5,
0x05, 0xe2, 0x74, 0xe3, 0xad, 0x0b, 0xb0, 0x4f, 0x7d, 0x3a, 0xb8, 0xda, 0xc7, 0x65, 0xe2, 0x1b,
0x00, 0xfd, 0x21, 0x66, 0xdc, 0x7a, 0x6b, 0x39, 0x0b, 0x91, 0x12, 0xb9, 0x7b, 0x1b, 0xca, 0x36,
0x8c, 0x09, 0x91, 0x54, 0xa9, 0x18, 0xb1, 0x14, 0x89, 0x6d, 0xab, 0xa1, 0x4d, 0x58, 0x9d, 0x9b,
0xd8, 0x35, 0x0d, 0xac, 0xb5, 0xe5, 0xb9, 0xba, 0xff, 0x1b, 0x73, 0xb2, 0xbf, 0x34, 0xe7, 0x10,
0xd6, 0x12, 0x15, 0xaf, 0x8f, 0x47, 0xca, 0xcb, 0x45, 0x77, 0xbc, 0x39, 0xbb, 0xe3, 0xf9, 0xac,
0xcd, 0xe7, 0xb3, 0xfa, 0xa7, 0xc7, 0x23, 0x65, 0xaf, 0xb9, 0x1c, 0x24, 0xb5, 0x78, 0x56, 0xce,
0xa9, 0xdf, 0x65, 0xc4, 0xcb, 0x47, 0x3f, 0xd3, 0x42, 0xac, 0x3c, 0x21, 0xd5, 0x47, 0x80, 0x96,
0xff, 0xc7, 0x3f, 0x9c, 0x75, 0xa6, 0x71, 0xea, 0x40, 0xee, 0x05, 0x95, 0x53, 0xd6, 0xa7, 0x4b,
0xab, 0xb8, 0x05, 0x25, 0x65, 0x43, 0xc9, 0xb3, 0x2e, 0xc6, 0x5a, 0x64, 0xfe, 0x1d, 0xa8, 0xcc,
0x52, 0x28, 0x27, 0x81, 0x30, 0x37, 0x60, 0x37, 0xb4, 0x16, 0xeb, 0x07, 0xb1, 0x7c, 0xc5, 0x0a,
0xd2, 0x57, 0xac, 0x60, 0x01, 0x30, 0xfb, 0xf8, 0xe1, 0xe7, 0xf3, 0x9a, 0x73, 0x76, 0x5e, 0x73,
0xbe, 0x9d, 0xd7, 0x9c, 0xf7, 0x17, 0xb5, 0x95, 0xb3, 0x8b, 0xda, 0xca, 0xd7, 0x8b, 0xda, 0xca,
0xab, 0xc6, 0x80, 0xe9, 0xe1, 0xa4, 0xd7, 0xec, 0x8b, 0x71, 0x4b, 0x70, 0x25, 0xb8, 0x6c, 0x0d,
0x8f, 0x71, 0xd8, 0x3a, 0x69, 0x99, 0xaf, 0xad, 0x21, 0x56, 0xbd, 0x6c, 0xf4, 0xa5, 0xbd, 0xff,
0x23, 0x00, 0x00, 0xff, 0xff, 0x12, 0x6f, 0x94, 0xba, 0xb6, 0x05, 0x00, 0x00,
// 755 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0x3f, 0x6f, 0x3b, 0x35,
0x18, 0xc7, 0x7b, 0xb9, 0xfc, 0x7d, 0xf2, 0x87, 0x60, 0x95, 0x5f, 0x8f, 0x40, 0x43, 0x08, 0xaa,
0x94, 0x29, 0x47, 0xcb, 0x82, 0x5a, 0x06, 0x42, 0xdb, 0x01, 0x50, 0xa5, 0x2a, 0x85, 0x85, 0x25,
0xba, 0x9c, 0xdd, 0xc4, 0xe4, 0xce, 0x3e, 0xd9, 0x4e, 0xda, 0xdb, 0xd8, 0x91, 0x10, 0x03, 0x33,
0x2b, 0x23, 0x6f, 0x83, 0xb1, 0x12, 0x0b, 0x03, 0x03, 0x6a, 0xdf, 0x01, 0xaf, 0x00, 0xdd, 0xd9,
0xd7, 0x5c, 0x93, 0x02, 0xfa, 0xa9, 0x53, 0xe2, 0xcf, 0xf3, 0xd8, 0xcf, 0xf7, 0xf9, 0xfa, 0x49,
0x0c, 0x08, 0x53, 0xec, 0xae, 0x0e, 0x5d, 0xa9, 0x3c, 0x45, 0x86, 0x91, 0xe0, 0x8a, 0xa3, 0x32,
0xa6, 0x78, 0xb8, 0x3a, 0xec, 0xec, 0xf9, 0x5c, 0x86, 0x5c, 0xba, 0x5c, 0x84, 0x49, 0x0a, 0x17,
0xa1, 0x4e, 0xe8, 0xec, 0x9a, 0x4d, 0x33, 0xc2, 0x88, 0xa4, 0xd2, 0xd0, 0xec, 0x28, 0xc2, 0x96,
0xa1, 0x61, 0xfd, 0x5f, 0x2c, 0xa8, 0x8c, 0x02, 0xea, 0x49, 0x22, 0x51, 0x0b, 0x0a, 0x14, 0x3b,
0x56, 0xcf, 0x1a, 0xd4, 0xc6, 0x05, 0x8a, 0xd1, 0x2b, 0x28, 0x73, 0x41, 0x67, 0x94, 0x39, 0x85,
0x94, 0x99, 0x55, 0xc2, 0xe7, 0x1e, 0xc3, 0x01, 0x71, 0x6c, 0xcd, 0xf5, 0x0a, 0x75, 0x01, 0x7c,
0xce, 0x94, 0xe0, 0x41, 0x40, 0x84, 0x53, 0x4c, 0x63, 0x39, 0x92, 0xc4, 0xc9, 0x6d, 0x44, 0x85,
0xa7, 0x28, 0x67, 0x4e, 0xa9, 0x67, 0x0d, 0x8a, 0xe3, 0x1c, 0x39, 0x7e, 0xf7, 0xef, 0x9f, 0x7f,
0xff, 0xc1, 0x7e, 0x05, 0xc5, 0x44, 0x07, 0x6a, 0x64, 0x55, 0xda, 0x96, 0x63, 0x39, 0x56, 0xff,
0xbb, 0x02, 0xd4, 0x46, 0x52, 0x12, 0x91, 0xe4, 0x6e, 0x69, 0x7d, 0x1b, 0xaa, 0x0b, 0x12, 0x4f,
0x54, 0x1c, 0x11, 0xa3, 0xb6, 0xb2, 0x20, 0xf1, 0x57, 0x71, 0xa4, 0x65, 0x09, 0x82, 0x09, 0x53,
0xd4, 0x0b, 0x52, 0xc9, 0x8d, 0x71, 0x8e, 0xa0, 0x13, 0xa8, 0x86, 0x44, 0x79, 0xd8, 0x53, 0x9e,
0x53, 0xec, 0xd9, 0x83, 0xfa, 0xd1, 0x7b, 0x43, 0x6d, 0xf0, 0xf0, 0xb1, 0xde, 0xf0, 0xc2, 0x64,
0x9c, 0x33, 0x25, 0xe2, 0xf1, 0xe3, 0x86, 0x8d, 0x9e, 0x4b, 0x9b, 0x3d, 0x77, 0x4e, 0xa0, 0xf9,
0x64, 0x2b, 0x6a, 0x83, 0xbd, 0x20, 0xb1, 0x51, 0x9e, 0x7c, 0x45, 0xbb, 0x50, 0x5a, 0x79, 0xc1,
0x32, 0xd3, 0xad, 0x17, 0xc7, 0x85, 0x8f, 0xad, 0xe3, 0x56, 0x6a, 0x48, 0x55, 0x1b, 0xe2, 0x14,
0xfa, 0x3f, 0x59, 0x50, 0x1f, 0x29, 0x45, 0x92, 0x59, 0x78, 0x4d, 0x13, 0x1e, 0x8b, 0xd8, 0xb9,
0x22, 0x09, 0x8d, 0x04, 0xe7, 0xd7, 0xe6, 0xb2, 0xf4, 0xe2, 0xff, 0x7a, 0xda, 0x90, 0x65, 0xf7,
0x7f, 0xb5, 0x00, 0x4e, 0xd7, 0xd7, 0xbc, 0xa9, 0xaa, 0x0d, 0x36, 0x4e, 0xe4, 0xeb, 0x8e, 0x31,
0xc5, 0xe8, 0x43, 0xd8, 0x8d, 0x96, 0xd3, 0x80, 0xfa, 0x93, 0x44, 0x6e, 0xb8, 0x0c, 0x14, 0x9d,
0x7a, 0x32, 0xd3, 0x86, 0x74, 0xec, 0x4b, 0x12, 0x5f, 0x64, 0x11, 0xf4, 0x0e, 0xd4, 0x56, 0xde,
0x32, 0x50, 0x13, 0x9f, 0x62, 0x23, 0xb6, 0x9a, 0x82, 0x53, 0x8a, 0x51, 0x0f, 0xea, 0xd7, 0x94,
0xcd, 0x88, 0x88, 0x04, 0x65, 0x2a, 0x15, 0xdc, 0x18, 0xe7, 0xd1, 0x86, 0xe2, 0x62, 0xff, 0x7b,
0x1b, 0xe0, 0x8c, 0x04, 0x64, 0xf6, 0xbc, 0x8f, 0xdb, 0x8a, 0xf7, 0x01, 0xfc, 0xb9, 0x47, 0x99,
0xf6, 0x56, 0xeb, 0xac, 0xa5, 0x24, 0x75, 0xf7, 0x03, 0x68, 0xea, 0xb0, 0x87, 0xb1, 0x20, 0x52,
0x1a, 0x89, 0x8d, 0x14, 0x8e, 0x34, 0x43, 0x07, 0xd0, 0x5a, 0x9b, 0x38, 0x49, 0x0a, 0x68, 0x6b,
0x9b, 0x6b, 0x7a, 0xf6, 0x1f, 0xe6, 0x94, 0xff, 0xd5, 0x9c, 0x0b, 0x78, 0x23, 0xb7, 0xe3, 0xdb,
0x9b, 0x85, 0x74, 0x2a, 0xe9, 0x1c, 0x1f, 0x64, 0x73, 0xbc, 0xee, 0x75, 0x78, 0x99, 0xed, 0xff,
0xe2, 0x66, 0x21, 0xf5, 0x34, 0x37, 0xa3, 0x3c, 0x33, 0xbd, 0x32, 0x46, 0x82, 0x09, 0xc5, 0x4e,
0x35, 0xfd, 0x99, 0xd6, 0x0c, 0xf9, 0x1c, 0x77, 0x3e, 0x05, 0xb4, 0x7d, 0xc6, 0x0b, 0xc6, 0xba,
0xd4, 0xff, 0xb3, 0x00, 0x95, 0x2b, 0x22, 0x56, 0xd4, 0x27, 0x5b, 0x57, 0xf1, 0x3e, 0x34, 0xa4,
0x0e, 0xe5, 0xc7, 0xba, 0x6e, 0x58, 0x6a, 0xfe, 0xb6, 0xaf, 0xf6, 0x73, 0xbe, 0xee, 0x03, 0xe8,
0xff, 0xaf, 0xc9, 0x52, 0x50, 0x73, 0x41, 0x35, 0x4d, 0xbe, 0x16, 0x14, 0x8d, 0xe1, 0xcd, 0xac,
0x10, 0x61, 0x38, 0xe2, 0x94, 0x29, 0xe9, 0x94, 0x9e, 0xda, 0x68, 0x44, 0x66, 0x9f, 0xe7, 0x59,
0x9e, 0xb6, 0xb1, 0x2d, 0x37, 0x30, 0x72, 0xa1, 0x2c, 0x7d, 0x1e, 0x11, 0xe9, 0x94, 0x7b, 0xf6,
0xa0, 0x75, 0xb4, 0x97, 0x1d, 0x74, 0x49, 0x44, 0x48, 0xa5, 0xa4, 0x9c, 0x5d, 0x25, 0xf1, 0xb1,
0x49, 0xeb, 0x9c, 0xc2, 0x5b, 0xcf, 0x9e, 0xfd, 0x02, 0x7b, 0xcb, 0x9f, 0x7d, 0xf2, 0xdb, 0x7d,
0xd7, 0xba, 0xbb, 0xef, 0x5a, 0x7f, 0xdd, 0x77, 0xad, 0x1f, 0x1f, 0xba, 0x3b, 0x77, 0x0f, 0xdd,
0x9d, 0x3f, 0x1e, 0xba, 0x3b, 0xdf, 0xf4, 0x67, 0x54, 0xcd, 0x97, 0xd3, 0xa1, 0xcf, 0x43, 0x97,
0x33, 0xc9, 0x99, 0x70, 0xe7, 0x37, 0x5e, 0xec, 0xde, 0xba, 0xc9, 0x4b, 0x91, 0xf8, 0x2d, 0xa7,
0xe5, 0xf4, 0x9d, 0xf8, 0xe8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x5a, 0x9d, 0xc9, 0x88,
0x06, 0x00, 0x00,
}
func (m *Aliases) Marshal() (dAtA []byte, err error) {
@ -944,18 +968,55 @@ func (m *Service) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if len(m.Scopes) > 0 {
dAtA2 := make([]byte, len(m.Scopes)*10)
var j1 int
for _, num := range m.Scopes {
for num >= 1<<7 {
dAtA2[j1] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j1++
}
dAtA2[j1] = uint8(num)
j1++
}
i -= j1
copy(dAtA[i:], dAtA2[:j1])
i = encodeVarintState(dAtA, i, uint64(j1))
i--
dAtA[i] = 0x32
}
if len(m.ServiceEndpoints) > 0 {
for k := range m.ServiceEndpoints {
v := m.ServiceEndpoints[k]
baseI := i
i -= len(v)
copy(dAtA[i:], v)
i = encodeVarintState(dAtA, i, uint64(len(v)))
i--
dAtA[i] = 0x12
i -= len(k)
copy(dAtA[i:], k)
i = encodeVarintState(dAtA, i, uint64(len(k)))
i--
dAtA[i] = 0xa
i = encodeVarintState(dAtA, i, uint64(baseI-i))
i--
dAtA[i] = 0x2a
}
}
if len(m.OriginUri) > 0 {
i -= len(m.OriginUri)
copy(dAtA[i:], m.OriginUri)
i = encodeVarintState(dAtA, i, uint64(len(m.OriginUri)))
i--
dAtA[i] = 0x22
}
if len(m.ControllerDid) > 0 {
i -= len(m.ControllerDid)
copy(dAtA[i:], m.ControllerDid)
i = encodeVarintState(dAtA, i, uint64(len(m.ControllerDid)))
i--
dAtA[i] = 0x22
}
if len(m.ServiceEndpoint) > 0 {
i -= len(m.ServiceEndpoint)
copy(dAtA[i:], m.ServiceEndpoint)
i = encodeVarintState(dAtA, i, uint64(len(m.ServiceEndpoint)))
i--
dAtA[i] = 0x1a
}
if len(m.ServiceType) > 0 {
@ -1163,14 +1224,29 @@ func (m *Service) Size() (n int) {
if l > 0 {
n += 1 + l + sovState(uint64(l))
}
l = len(m.ServiceEndpoint)
if l > 0 {
n += 1 + l + sovState(uint64(l))
}
l = len(m.ControllerDid)
if l > 0 {
n += 1 + l + sovState(uint64(l))
}
l = len(m.OriginUri)
if l > 0 {
n += 1 + l + sovState(uint64(l))
}
if len(m.ServiceEndpoints) > 0 {
for k, v := range m.ServiceEndpoints {
_ = k
_ = v
mapEntrySize := 1 + len(k) + sovState(uint64(len(k))) + 1 + len(v) + sovState(uint64(len(v)))
n += mapEntrySize + 1 + sovState(uint64(mapEntrySize))
}
}
if len(m.Scopes) > 0 {
l = 0
for _, e := range m.Scopes {
l += sovState(uint64(e))
}
n += 1 + sovState(uint64(l)) + l
}
return n
}
@ -2588,38 +2664,6 @@ func (m *Service) Unmarshal(dAtA []byte) error {
m.ServiceType = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoint", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthState
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthState
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ServiceEndpoint = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ControllerDid", wireType)
}
@ -2651,6 +2695,234 @@ func (m *Service) Unmarshal(dAtA []byte) error {
}
m.ControllerDid = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field OriginUri", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthState
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthState
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.OriginUri = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ServiceEndpoints", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthState
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthState
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.ServiceEndpoints == nil {
m.ServiceEndpoints = make(map[string]string)
}
var mapkey string
var mapvalue string
for iNdEx < postIndex {
entryPreIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
if fieldNum == 1 {
var stringLenmapkey uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapkey |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapkey := int(stringLenmapkey)
if intStringLenmapkey < 0 {
return ErrInvalidLengthState
}
postStringIndexmapkey := iNdEx + intStringLenmapkey
if postStringIndexmapkey < 0 {
return ErrInvalidLengthState
}
if postStringIndexmapkey > l {
return io.ErrUnexpectedEOF
}
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
} else if fieldNum == 2 {
var stringLenmapvalue uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapvalue |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapvalue := int(stringLenmapvalue)
if intStringLenmapvalue < 0 {
return ErrInvalidLengthState
}
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
if postStringIndexmapvalue < 0 {
return ErrInvalidLengthState
}
if postStringIndexmapvalue > l {
return io.ErrUnexpectedEOF
}
mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue
} else {
iNdEx = entryPreIndex
skippy, err := skipState(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthState
}
if (iNdEx + skippy) > postIndex {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
m.ServiceEndpoints[mapkey] = mapvalue
iNdEx = postIndex
case 6:
if wireType == 0 {
var v PermissionScope
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= PermissionScope(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.Scopes = append(m.Scopes, v)
} else if wireType == 2 {
var packedLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
packedLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if packedLen < 0 {
return ErrInvalidLengthState
}
postIndex := iNdEx + packedLen
if postIndex < 0 {
return ErrInvalidLengthState
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
var elementCount int
if elementCount != 0 && len(m.Scopes) == 0 {
m.Scopes = make([]PermissionScope, 0, elementCount)
}
for iNdEx < postIndex {
var v PermissionScope
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowState
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= PermissionScope(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.Scopes = append(m.Scopes, v)
}
} else {
return fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType)
}
default:
iNdEx = preIndex
skippy, err := skipState(dAtA[iNdEx:])

File diff suppressed because it is too large Load Diff