From 3d176e11322d556546b7a47eae91d8a09aa10f17 Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 6 Dec 2025 08:57:30 -0800 Subject: [PATCH] feat: complete keygen_session_id implementation for signing sessions - Regenerate protobuf Go code with KeygenSessionId fields - Session Coordinator correctly parses, stores, and returns keygen_session_id - Message Router Client parses keygen_session_id in JoinSession response - participate_signing.go uses keygen_session_id for precise share lookup - Database schema already includes keygen_session_id column This fixes the signing issue where wrong keyshares were loaded for multi-account scenarios. --- backend/.claude/settings.local.json | 3 +- .../coordinator/v1/session_coordinator.pb.go | 50 +- .../api/grpc/router/v1/message_router.pb.go | 31 +- .../mpc-system/api/proto/message_router.pb.go | 2794 +++++++++++++++++ .../mpc-system/api/proto/message_router.proto | 1 + .../api/proto/message_router_grpc.pb.go | 700 +++++ .../api/proto/session_coordinator.pb.go | 1760 ----------- .../api/proto/session_coordinator_grpc.pb.go | 395 --- .../input/grpc/message_grpc_handler.go | 11 +- .../output/grpc/message_router_client.go | 7 + .../input/grpc/session_grpc_handler.go | 31 +- .../output/postgres/session_postgres_repo.go | 43 +- .../ports/input/session_management_port.go | 14 +- .../application/use_cases/create_session.go | 8 + .../application/use_cases/join_session.go | 13 +- .../domain/entities/mpc_session.go | 26 +- 16 files changed, 3662 insertions(+), 2225 deletions(-) create mode 100644 backend/mpc-system/api/proto/message_router.pb.go create mode 100644 backend/mpc-system/api/proto/message_router_grpc.pb.go delete mode 100644 backend/mpc-system/api/proto/session_coordinator.pb.go delete mode 100644 backend/mpc-system/api/proto/session_coordinator_grpc.pb.go diff --git a/backend/.claude/settings.local.json b/backend/.claude/settings.local.json index 818b4770..27b6ff8a 100644 --- a/backend/.claude/settings.local.json +++ b/backend/.claude/settings.local.json @@ -28,7 +28,8 @@ "Bash(bash scripts/deploy.sh:*)", "Bash(go run:*)", "Bash(timeout /t 5 /nobreak)", - "Bash(bash:*)" + "Bash(bash:*)", + "Bash(docker compose:*)" ], "deny": [], "ask": [] diff --git a/backend/mpc-system/api/grpc/coordinator/v1/session_coordinator.pb.go b/backend/mpc-system/api/grpc/coordinator/v1/session_coordinator.pb.go index 08fc72db..86f1a184 100644 --- a/backend/mpc-system/api/grpc/coordinator/v1/session_coordinator.pb.go +++ b/backend/mpc-system/api/grpc/coordinator/v1/session_coordinator.pb.go @@ -33,8 +33,10 @@ type CreateSessionRequest struct { PartyComposition *PartyComposition `protobuf:"bytes,7,opt,name=party_composition,json=partyComposition,proto3" json:"party_composition,omitempty"` // Optional: party composition requirements for auto-selection // For sign sessions with delegate party: user must provide their encrypted share DelegateUserShare *DelegateUserShare `protobuf:"bytes,8,opt,name=delegate_user_share,json=delegateUserShare,proto3" json:"delegate_user_share,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // For sign sessions: which keygen session's shares to use + KeygenSessionId string `protobuf:"bytes,9,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSessionRequest) Reset() { @@ -123,6 +125,13 @@ func (x *CreateSessionRequest) GetDelegateUserShare() *DelegateUserShare { return nil } +func (x *CreateSessionRequest) GetKeygenSessionId() string { + if x != nil { + return x.KeygenSessionId + } + return "" +} + // DelegateUserShare contains user's share for delegate party to use in signing type DelegateUserShare struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -584,15 +593,17 @@ func (x *JoinSessionResponse) GetPartyIndex() int32 { // SessionInfo contains session information type SessionInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` - ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` - ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` - MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` + ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` + ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` + MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + // For sign sessions: which keygen session's shares to use + KeygenSessionId string `protobuf:"bytes,7,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionInfo) Reset() { @@ -667,6 +678,13 @@ func (x *SessionInfo) GetStatus() string { return "" } +func (x *SessionInfo) GetKeygenSessionId() string { + if x != nil { + return x.KeygenSessionId + } + return "" +} + // PartyInfo contains party information type PartyInfo struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1497,7 +1515,7 @@ var File_api_proto_session_coordinator_proto protoreflect.FileDescriptor const file_api_proto_session_coordinator_proto_rawDesc = "" + "\n" + - "#api/proto/session_coordinator.proto\x12\x12mpc.coordinator.v1\"\xbf\x03\n" + + "#api/proto/session_coordinator.proto\x12\x12mpc.coordinator.v1\"\xeb\x03\n" + "\x14CreateSessionRequest\x12!\n" + "\fsession_type\x18\x01 \x01(\tR\vsessionType\x12\x1f\n" + "\vthreshold_n\x18\x02 \x01(\x05R\n" + @@ -1508,7 +1526,8 @@ const file_api_proto_session_coordinator_proto_rawDesc = "" + "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12,\n" + "\x12expires_in_seconds\x18\x06 \x01(\x03R\x10expiresInSeconds\x12Q\n" + "\x11party_composition\x18\a \x01(\v2$.mpc.coordinator.v1.PartyCompositionR\x10partyComposition\x12U\n" + - "\x13delegate_user_share\x18\b \x01(\v2%.mpc.coordinator.v1.DelegateUserShareR\x11delegateUserShare\"\x89\x01\n" + + "\x13delegate_user_share\x18\b \x01(\v2%.mpc.coordinator.v1.DelegateUserShareR\x11delegateUserShare\x12*\n" + + "\x11keygen_session_id\x18\t \x01(\tR\x0fkeygenSessionId\"\x89\x01\n" + "\x11DelegateUserShare\x12*\n" + "\x11delegate_party_id\x18\x01 \x01(\tR\x0fdelegatePartyId\x12'\n" + "\x0fencrypted_share\x18\x02 \x01(\fR\x0eencryptedShare\x12\x1f\n" + @@ -1555,7 +1574,7 @@ const file_api_proto_session_coordinator_proto_rawDesc = "" + "\fsession_info\x18\x02 \x01(\v2\x1f.mpc.coordinator.v1.SessionInfoR\vsessionInfo\x12B\n" + "\rother_parties\x18\x03 \x03(\v2\x1d.mpc.coordinator.v1.PartyInfoR\fotherParties\x12\x1f\n" + "\vparty_index\x18\x04 \x01(\x05R\n" + - "partyIndex\"\xcc\x01\n" + + "partyIndex\"\xf8\x01\n" + "\vSessionInfo\x12\x1d\n" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + @@ -1565,7 +1584,8 @@ const file_api_proto_session_coordinator_proto_rawDesc = "" + "\vthreshold_t\x18\x04 \x01(\x05R\n" + "thresholdT\x12!\n" + "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12\x16\n" + - "\x06status\x18\x06 \x01(\tR\x06status\"\x88\x01\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12*\n" + + "\x11keygen_session_id\x18\a \x01(\tR\x0fkeygenSessionId\"\x88\x01\n" + "\tPartyInfo\x12\x19\n" + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" + "\vparty_index\x18\x02 \x01(\x05R\n" + diff --git a/backend/mpc-system/api/grpc/router/v1/message_router.pb.go b/backend/mpc-system/api/grpc/router/v1/message_router.pb.go index 251b7a78..d9b3d7a1 100644 --- a/backend/mpc-system/api/grpc/router/v1/message_router.pb.go +++ b/backend/mpc-system/api/grpc/router/v1/message_router.pb.go @@ -1716,15 +1716,16 @@ func (x *PartyInfo) GetDeviceInfo() *DeviceInfo { // SessionInfo contains session information type SessionInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // keygen, sign - ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` - ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` - MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // For sign sessions - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // keygen, sign + ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` + ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` + MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // For sign sessions + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + KeygenSessionId string `protobuf:"bytes,7,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` // For sign sessions: which keygen session's shares to use + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SessionInfo) Reset() { @@ -1799,6 +1800,13 @@ func (x *SessionInfo) GetStatus() string { return "" } +func (x *SessionInfo) GetKeygenSessionId() string { + if x != nil { + return x.KeygenSessionId + } + return "" +} + // JoinSessionRequest joins a session type JoinSessionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -2574,7 +2582,7 @@ const file_api_proto_message_router_proto_rawDesc = "" + "\vparty_index\x18\x02 \x01(\x05R\n" + "partyIndex\x12:\n" + "\vdevice_info\x18\x03 \x01(\v2\x19.mpc.router.v1.DeviceInfoR\n" + - "deviceInfo\"\xcc\x01\n" + + "deviceInfo\"\xf8\x01\n" + "\vSessionInfo\x12\x1d\n" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + @@ -2584,7 +2592,8 @@ const file_api_proto_message_router_proto_rawDesc = "" + "\vthreshold_t\x18\x04 \x01(\x05R\n" + "thresholdT\x12!\n" + "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12\x16\n" + - "\x06status\x18\x06 \x01(\tR\x06status\"\xa9\x01\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12*\n" + + "\x11keygen_session_id\x18\a \x01(\tR\x0fkeygenSessionId\"\xa9\x01\n" + "\x12JoinSessionRequest\x12\x1d\n" + "\n" + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + diff --git a/backend/mpc-system/api/proto/message_router.pb.go b/backend/mpc-system/api/proto/message_router.pb.go new file mode 100644 index 00000000..d9b3d7a1 --- /dev/null +++ b/backend/mpc-system/api/proto/message_router.pb.go @@ -0,0 +1,2794 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.10 +// protoc v6.33.1 +// source: api/proto/message_router.proto + +package router + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// RouteMessageRequest routes an MPC message +type RouteMessageRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + FromParty string `protobuf:"bytes,2,opt,name=from_party,json=fromParty,proto3" json:"from_party,omitempty"` + ToParties []string `protobuf:"bytes,3,rep,name=to_parties,json=toParties,proto3" json:"to_parties,omitempty"` // Empty for broadcast + RoundNumber int32 `protobuf:"varint,4,opt,name=round_number,json=roundNumber,proto3" json:"round_number,omitempty"` + MessageType string `protobuf:"bytes,5,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` + Payload []byte `protobuf:"bytes,6,opt,name=payload,proto3" json:"payload,omitempty"` // Encrypted MPC message + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteMessageRequest) Reset() { + *x = RouteMessageRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteMessageRequest) ProtoMessage() {} + +func (x *RouteMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[0] + 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 RouteMessageRequest.ProtoReflect.Descriptor instead. +func (*RouteMessageRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{0} +} + +func (x *RouteMessageRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *RouteMessageRequest) GetFromParty() string { + if x != nil { + return x.FromParty + } + return "" +} + +func (x *RouteMessageRequest) GetToParties() []string { + if x != nil { + return x.ToParties + } + return nil +} + +func (x *RouteMessageRequest) GetRoundNumber() int32 { + if x != nil { + return x.RoundNumber + } + return 0 +} + +func (x *RouteMessageRequest) GetMessageType() string { + if x != nil { + return x.MessageType + } + return "" +} + +func (x *RouteMessageRequest) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +// RouteMessageResponse confirms message routing +type RouteMessageResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + MessageId string `protobuf:"bytes,2,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RouteMessageResponse) Reset() { + *x = RouteMessageResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RouteMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteMessageResponse) ProtoMessage() {} + +func (x *RouteMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[1] + 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 RouteMessageResponse.ProtoReflect.Descriptor instead. +func (*RouteMessageResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{1} +} + +func (x *RouteMessageResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *RouteMessageResponse) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +// SubscribeMessagesRequest subscribes to messages for a party +type SubscribeMessagesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubscribeMessagesRequest) Reset() { + *x = SubscribeMessagesRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubscribeMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeMessagesRequest) ProtoMessage() {} + +func (x *SubscribeMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[2] + 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 SubscribeMessagesRequest.ProtoReflect.Descriptor instead. +func (*SubscribeMessagesRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{2} +} + +func (x *SubscribeMessagesRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *SubscribeMessagesRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +// MPCMessage represents an MPC protocol message +type MPCMessage struct { + state protoimpl.MessageState `protogen:"open.v1"` + MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + FromParty string `protobuf:"bytes,3,opt,name=from_party,json=fromParty,proto3" json:"from_party,omitempty"` + IsBroadcast bool `protobuf:"varint,4,opt,name=is_broadcast,json=isBroadcast,proto3" json:"is_broadcast,omitempty"` + RoundNumber int32 `protobuf:"varint,5,opt,name=round_number,json=roundNumber,proto3" json:"round_number,omitempty"` + MessageType string `protobuf:"bytes,6,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"` + Payload []byte `protobuf:"bytes,7,opt,name=payload,proto3" json:"payload,omitempty"` + CreatedAt int64 `protobuf:"varint,8,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp milliseconds + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MPCMessage) Reset() { + *x = MPCMessage{} + mi := &file_api_proto_message_router_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MPCMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MPCMessage) ProtoMessage() {} + +func (x *MPCMessage) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[3] + 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 MPCMessage.ProtoReflect.Descriptor instead. +func (*MPCMessage) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{3} +} + +func (x *MPCMessage) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *MPCMessage) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *MPCMessage) GetFromParty() string { + if x != nil { + return x.FromParty + } + return "" +} + +func (x *MPCMessage) GetIsBroadcast() bool { + if x != nil { + return x.IsBroadcast + } + return false +} + +func (x *MPCMessage) GetRoundNumber() int32 { + if x != nil { + return x.RoundNumber + } + return 0 +} + +func (x *MPCMessage) GetMessageType() string { + if x != nil { + return x.MessageType + } + return "" +} + +func (x *MPCMessage) GetPayload() []byte { + if x != nil { + return x.Payload + } + return nil +} + +func (x *MPCMessage) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +// GetPendingMessagesRequest retrieves pending messages +type GetPendingMessagesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + AfterTimestamp int64 `protobuf:"varint,3,opt,name=after_timestamp,json=afterTimestamp,proto3" json:"after_timestamp,omitempty"` // Get messages after this timestamp + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPendingMessagesRequest) Reset() { + *x = GetPendingMessagesRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPendingMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPendingMessagesRequest) ProtoMessage() {} + +func (x *GetPendingMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[4] + 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 GetPendingMessagesRequest.ProtoReflect.Descriptor instead. +func (*GetPendingMessagesRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{4} +} + +func (x *GetPendingMessagesRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *GetPendingMessagesRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *GetPendingMessagesRequest) GetAfterTimestamp() int64 { + if x != nil { + return x.AfterTimestamp + } + return 0 +} + +// GetPendingMessagesResponse contains pending messages +type GetPendingMessagesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Messages []*MPCMessage `protobuf:"bytes,1,rep,name=messages,proto3" json:"messages,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetPendingMessagesResponse) Reset() { + *x = GetPendingMessagesResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetPendingMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPendingMessagesResponse) ProtoMessage() {} + +func (x *GetPendingMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[5] + 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 GetPendingMessagesResponse.ProtoReflect.Descriptor instead. +func (*GetPendingMessagesResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{5} +} + +func (x *GetPendingMessagesResponse) GetMessages() []*MPCMessage { + if x != nil { + return x.Messages + } + return nil +} + +// NotificationChannel represents a notification channel for offline parties +// If a party has notification channels, it operates in offline mode (24h async) +// If no notification channels, it operates in real-time mode (Message Router push) +type NotificationChannel struct { + state protoimpl.MessageState `protogen:"open.v1"` + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` // Optional: email address for notifications + Phone string `protobuf:"bytes,2,opt,name=phone,proto3" json:"phone,omitempty"` // Optional: phone number for SMS notifications + PushToken string `protobuf:"bytes,3,opt,name=push_token,json=pushToken,proto3" json:"push_token,omitempty"` // Optional: push notification token (FCM/APNs) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NotificationChannel) Reset() { + *x = NotificationChannel{} + mi := &file_api_proto_message_router_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NotificationChannel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NotificationChannel) ProtoMessage() {} + +func (x *NotificationChannel) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[6] + 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 NotificationChannel.ProtoReflect.Descriptor instead. +func (*NotificationChannel) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{6} +} + +func (x *NotificationChannel) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *NotificationChannel) GetPhone() string { + if x != nil { + return x.Phone + } + return "" +} + +func (x *NotificationChannel) GetPushToken() string { + if x != nil { + return x.PushToken + } + return "" +} + +// RegisterPartyRequest registers a party with the router +type RegisterPartyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Unique party identifier + PartyRole string `protobuf:"bytes,2,opt,name=party_role,json=partyRole,proto3" json:"party_role,omitempty"` // persistent, delegate, or temporary + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // Party software version + Notification *NotificationChannel `protobuf:"bytes,4,opt,name=notification,proto3" json:"notification,omitempty"` // Optional: notification channel for offline mode + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegisterPartyRequest) Reset() { + *x = RegisterPartyRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterPartyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterPartyRequest) ProtoMessage() {} + +func (x *RegisterPartyRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_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 RegisterPartyRequest.ProtoReflect.Descriptor instead. +func (*RegisterPartyRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{7} +} + +func (x *RegisterPartyRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *RegisterPartyRequest) GetPartyRole() string { + if x != nil { + return x.PartyRole + } + return "" +} + +func (x *RegisterPartyRequest) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *RegisterPartyRequest) GetNotification() *NotificationChannel { + if x != nil { + return x.Notification + } + return nil +} + +// RegisterPartyResponse confirms party registration +type RegisterPartyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + RegisteredAt int64 `protobuf:"varint,3,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"` // Unix timestamp milliseconds + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegisterPartyResponse) Reset() { + *x = RegisterPartyResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisterPartyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisterPartyResponse) ProtoMessage() {} + +func (x *RegisterPartyResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_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 RegisterPartyResponse.ProtoReflect.Descriptor instead. +func (*RegisterPartyResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{8} +} + +func (x *RegisterPartyResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *RegisterPartyResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *RegisterPartyResponse) GetRegisteredAt() int64 { + if x != nil { + return x.RegisteredAt + } + return 0 +} + +// SubscribeSessionEventsRequest subscribes to session events +type SubscribeSessionEventsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Party ID subscribing to events + EventTypes []string `protobuf:"bytes,2,rep,name=event_types,json=eventTypes,proto3" json:"event_types,omitempty"` // Event types to subscribe (empty = all) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubscribeSessionEventsRequest) Reset() { + *x = SubscribeSessionEventsRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubscribeSessionEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeSessionEventsRequest) ProtoMessage() {} + +func (x *SubscribeSessionEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_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 SubscribeSessionEventsRequest.ProtoReflect.Descriptor instead. +func (*SubscribeSessionEventsRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{9} +} + +func (x *SubscribeSessionEventsRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *SubscribeSessionEventsRequest) GetEventTypes() []string { + if x != nil { + return x.EventTypes + } + return nil +} + +// SessionEvent represents a session lifecycle event +type SessionEvent struct { + state protoimpl.MessageState `protogen:"open.v1"` + EventId string `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"` + EventType string `protobuf:"bytes,2,opt,name=event_type,json=eventType,proto3" json:"event_type,omitempty"` // session_created, session_started, etc. + SessionId string `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + ThresholdN int32 `protobuf:"varint,4,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` + ThresholdT int32 `protobuf:"varint,5,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` + SelectedParties []string `protobuf:"bytes,6,rep,name=selected_parties,json=selectedParties,proto3" json:"selected_parties,omitempty"` // PartyIDs selected for this session + JoinTokens map[string]string `protobuf:"bytes,7,rep,name=join_tokens,json=joinTokens,proto3" json:"join_tokens,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // PartyID -> JoinToken mapping + MessageHash []byte `protobuf:"bytes,8,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // For sign sessions + CreatedAt int64 `protobuf:"varint,9,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` // Unix timestamp milliseconds + ExpiresAt int64 `protobuf:"varint,10,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // Unix timestamp milliseconds + // For sign sessions with delegate party: user's share for delegate to use + DelegateUserShare *DelegateUserShare `protobuf:"bytes,11,opt,name=delegate_user_share,json=delegateUserShare,proto3" json:"delegate_user_share,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SessionEvent) Reset() { + *x = SessionEvent{} + mi := &file_api_proto_message_router_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SessionEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionEvent) ProtoMessage() {} + +func (x *SessionEvent) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[10] + 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 SessionEvent.ProtoReflect.Descriptor instead. +func (*SessionEvent) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{10} +} + +func (x *SessionEvent) GetEventId() string { + if x != nil { + return x.EventId + } + return "" +} + +func (x *SessionEvent) GetEventType() string { + if x != nil { + return x.EventType + } + return "" +} + +func (x *SessionEvent) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *SessionEvent) GetThresholdN() int32 { + if x != nil { + return x.ThresholdN + } + return 0 +} + +func (x *SessionEvent) GetThresholdT() int32 { + if x != nil { + return x.ThresholdT + } + return 0 +} + +func (x *SessionEvent) GetSelectedParties() []string { + if x != nil { + return x.SelectedParties + } + return nil +} + +func (x *SessionEvent) GetJoinTokens() map[string]string { + if x != nil { + return x.JoinTokens + } + return nil +} + +func (x *SessionEvent) GetMessageHash() []byte { + if x != nil { + return x.MessageHash + } + return nil +} + +func (x *SessionEvent) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *SessionEvent) GetExpiresAt() int64 { + if x != nil { + return x.ExpiresAt + } + return 0 +} + +func (x *SessionEvent) GetDelegateUserShare() *DelegateUserShare { + if x != nil { + return x.DelegateUserShare + } + return nil +} + +// DelegateUserShare contains user's share for delegate party to use in signing +type DelegateUserShare struct { + state protoimpl.MessageState `protogen:"open.v1"` + DelegatePartyId string `protobuf:"bytes,1,opt,name=delegate_party_id,json=delegatePartyId,proto3" json:"delegate_party_id,omitempty"` // The delegate party that will use this share + EncryptedShare []byte `protobuf:"bytes,2,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // User's encrypted share + PartyIndex int32 `protobuf:"varint,3,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // Party index for this share + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DelegateUserShare) Reset() { + *x = DelegateUserShare{} + mi := &file_api_proto_message_router_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DelegateUserShare) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DelegateUserShare) ProtoMessage() {} + +func (x *DelegateUserShare) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[11] + 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 DelegateUserShare.ProtoReflect.Descriptor instead. +func (*DelegateUserShare) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{11} +} + +func (x *DelegateUserShare) GetDelegatePartyId() string { + if x != nil { + return x.DelegatePartyId + } + return "" +} + +func (x *DelegateUserShare) GetEncryptedShare() []byte { + if x != nil { + return x.EncryptedShare + } + return nil +} + +func (x *DelegateUserShare) GetPartyIndex() int32 { + if x != nil { + return x.PartyIndex + } + return 0 +} + +// PublishSessionEventRequest publishes a session event +type PublishSessionEventRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Event *SessionEvent `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PublishSessionEventRequest) Reset() { + *x = PublishSessionEventRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublishSessionEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishSessionEventRequest) ProtoMessage() {} + +func (x *PublishSessionEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[12] + 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 PublishSessionEventRequest.ProtoReflect.Descriptor instead. +func (*PublishSessionEventRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{12} +} + +func (x *PublishSessionEventRequest) GetEvent() *SessionEvent { + if x != nil { + return x.Event + } + return nil +} + +// PublishSessionEventResponse confirms event publication +type PublishSessionEventResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + SubscriberCount int32 `protobuf:"varint,2,opt,name=subscriber_count,json=subscriberCount,proto3" json:"subscriber_count,omitempty"` // Number of parties that received the event + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PublishSessionEventResponse) Reset() { + *x = PublishSessionEventResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PublishSessionEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishSessionEventResponse) ProtoMessage() {} + +func (x *PublishSessionEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[13] + 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 PublishSessionEventResponse.ProtoReflect.Descriptor instead. +func (*PublishSessionEventResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{13} +} + +func (x *PublishSessionEventResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *PublishSessionEventResponse) GetSubscriberCount() int32 { + if x != nil { + return x.SubscriberCount + } + return 0 +} + +// GetRegisteredPartiesRequest requests registered parties list +type GetRegisteredPartiesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + RoleFilter string `protobuf:"bytes,1,opt,name=role_filter,json=roleFilter,proto3" json:"role_filter,omitempty"` // Optional: filter by role (persistent, delegate, temporary) + OnlyOnline bool `protobuf:"varint,2,opt,name=only_online,json=onlyOnline,proto3" json:"only_online,omitempty"` // Optional: only return online parties + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetRegisteredPartiesRequest) Reset() { + *x = GetRegisteredPartiesRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetRegisteredPartiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRegisteredPartiesRequest) ProtoMessage() {} + +func (x *GetRegisteredPartiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[14] + 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 GetRegisteredPartiesRequest.ProtoReflect.Descriptor instead. +func (*GetRegisteredPartiesRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{14} +} + +func (x *GetRegisteredPartiesRequest) GetRoleFilter() string { + if x != nil { + return x.RoleFilter + } + return "" +} + +func (x *GetRegisteredPartiesRequest) GetOnlyOnline() bool { + if x != nil { + return x.OnlyOnline + } + return false +} + +// RegisteredParty represents a registered party +type RegisteredParty struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Unique party identifier + Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"` // persistent, delegate, or temporary + Online bool `protobuf:"varint,3,opt,name=online,proto3" json:"online,omitempty"` // Whether party is currently connected + RegisteredAt int64 `protobuf:"varint,4,opt,name=registered_at,json=registeredAt,proto3" json:"registered_at,omitempty"` // Unix timestamp milliseconds + LastSeenAt int64 `protobuf:"varint,5,opt,name=last_seen_at,json=lastSeenAt,proto3" json:"last_seen_at,omitempty"` // Unix timestamp milliseconds + Notification *NotificationChannel `protobuf:"bytes,6,opt,name=notification,proto3" json:"notification,omitempty"` // Optional: notification channel (if set, party is offline mode) + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RegisteredParty) Reset() { + *x = RegisteredParty{} + mi := &file_api_proto_message_router_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RegisteredParty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RegisteredParty) ProtoMessage() {} + +func (x *RegisteredParty) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[15] + 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 RegisteredParty.ProtoReflect.Descriptor instead. +func (*RegisteredParty) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{15} +} + +func (x *RegisteredParty) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *RegisteredParty) GetRole() string { + if x != nil { + return x.Role + } + return "" +} + +func (x *RegisteredParty) GetOnline() bool { + if x != nil { + return x.Online + } + return false +} + +func (x *RegisteredParty) GetRegisteredAt() int64 { + if x != nil { + return x.RegisteredAt + } + return 0 +} + +func (x *RegisteredParty) GetLastSeenAt() int64 { + if x != nil { + return x.LastSeenAt + } + return 0 +} + +func (x *RegisteredParty) GetNotification() *NotificationChannel { + if x != nil { + return x.Notification + } + return nil +} + +// GetRegisteredPartiesResponse returns registered parties +type GetRegisteredPartiesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Parties []*RegisteredParty `protobuf:"bytes,1,rep,name=parties,proto3" json:"parties,omitempty"` + TotalCount int32 `protobuf:"varint,2,opt,name=total_count,json=totalCount,proto3" json:"total_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetRegisteredPartiesResponse) Reset() { + *x = GetRegisteredPartiesResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetRegisteredPartiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRegisteredPartiesResponse) ProtoMessage() {} + +func (x *GetRegisteredPartiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[16] + 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 GetRegisteredPartiesResponse.ProtoReflect.Descriptor instead. +func (*GetRegisteredPartiesResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{16} +} + +func (x *GetRegisteredPartiesResponse) GetParties() []*RegisteredParty { + if x != nil { + return x.Parties + } + return nil +} + +func (x *GetRegisteredPartiesResponse) GetTotalCount() int32 { + if x != nil { + return x.TotalCount + } + return 0 +} + +// AcknowledgeMessageRequest acknowledges message receipt +type AcknowledgeMessageRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` // ID of the message being acknowledged + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // ID of the party acknowledging + SessionId string `protobuf:"bytes,3,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // Session the message belongs to + Success bool `protobuf:"varint,4,opt,name=success,proto3" json:"success,omitempty"` // True if message was processed successfully + ErrorMessage string `protobuf:"bytes,5,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` // Error message if processing failed + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcknowledgeMessageRequest) Reset() { + *x = AcknowledgeMessageRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcknowledgeMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeMessageRequest) ProtoMessage() {} + +func (x *AcknowledgeMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[17] + 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 AcknowledgeMessageRequest.ProtoReflect.Descriptor instead. +func (*AcknowledgeMessageRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{17} +} + +func (x *AcknowledgeMessageRequest) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *AcknowledgeMessageRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *AcknowledgeMessageRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *AcknowledgeMessageRequest) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *AcknowledgeMessageRequest) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +// AcknowledgeMessageResponse confirms acknowledgment +type AcknowledgeMessageResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AcknowledgeMessageResponse) Reset() { + *x = AcknowledgeMessageResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AcknowledgeMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AcknowledgeMessageResponse) ProtoMessage() {} + +func (x *AcknowledgeMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[18] + 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 AcknowledgeMessageResponse.ProtoReflect.Descriptor instead. +func (*AcknowledgeMessageResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{18} +} + +func (x *AcknowledgeMessageResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *AcknowledgeMessageResponse) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +// GetMessageStatusRequest requests message delivery status +type GetMessageStatusRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMessageStatusRequest) Reset() { + *x = GetMessageStatusRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMessageStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessageStatusRequest) ProtoMessage() {} + +func (x *GetMessageStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[19] + 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 GetMessageStatusRequest.ProtoReflect.Descriptor instead. +func (*GetMessageStatusRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{19} +} + +func (x *GetMessageStatusRequest) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *GetMessageStatusRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +// MessageDeliveryStatus represents delivery status to a single party +type MessageDeliveryStatus struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // pending, delivered, acknowledged, failed + DeliveredAt int64 `protobuf:"varint,3,opt,name=delivered_at,json=deliveredAt,proto3" json:"delivered_at,omitempty"` // Unix timestamp milliseconds + AcknowledgedAt int64 `protobuf:"varint,4,opt,name=acknowledged_at,json=acknowledgedAt,proto3" json:"acknowledged_at,omitempty"` // Unix timestamp milliseconds + RetryCount int32 `protobuf:"varint,5,opt,name=retry_count,json=retryCount,proto3" json:"retry_count,omitempty"` // Number of delivery retries + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MessageDeliveryStatus) Reset() { + *x = MessageDeliveryStatus{} + mi := &file_api_proto_message_router_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MessageDeliveryStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageDeliveryStatus) ProtoMessage() {} + +func (x *MessageDeliveryStatus) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[20] + 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 MessageDeliveryStatus.ProtoReflect.Descriptor instead. +func (*MessageDeliveryStatus) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{20} +} + +func (x *MessageDeliveryStatus) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *MessageDeliveryStatus) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *MessageDeliveryStatus) GetDeliveredAt() int64 { + if x != nil { + return x.DeliveredAt + } + return 0 +} + +func (x *MessageDeliveryStatus) GetAcknowledgedAt() int64 { + if x != nil { + return x.AcknowledgedAt + } + return 0 +} + +func (x *MessageDeliveryStatus) GetRetryCount() int32 { + if x != nil { + return x.RetryCount + } + return 0 +} + +// GetMessageStatusResponse returns message delivery status +type GetMessageStatusResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + MessageId string `protobuf:"bytes,1,opt,name=message_id,json=messageId,proto3" json:"message_id,omitempty"` + SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + Deliveries []*MessageDeliveryStatus `protobuf:"bytes,3,rep,name=deliveries,proto3" json:"deliveries,omitempty"` + AllAcknowledged bool `protobuf:"varint,4,opt,name=all_acknowledged,json=allAcknowledged,proto3" json:"all_acknowledged,omitempty"` // True if all recipients acknowledged + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetMessageStatusResponse) Reset() { + *x = GetMessageStatusResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetMessageStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetMessageStatusResponse) ProtoMessage() {} + +func (x *GetMessageStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[21] + 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 GetMessageStatusResponse.ProtoReflect.Descriptor instead. +func (*GetMessageStatusResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{21} +} + +func (x *GetMessageStatusResponse) GetMessageId() string { + if x != nil { + return x.MessageId + } + return "" +} + +func (x *GetMessageStatusResponse) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *GetMessageStatusResponse) GetDeliveries() []*MessageDeliveryStatus { + if x != nil { + return x.Deliveries + } + return nil +} + +func (x *GetMessageStatusResponse) GetAllAcknowledged() bool { + if x != nil { + return x.AllAcknowledged + } + return false +} + +// HeartbeatRequest sends a heartbeat to keep the party alive +type HeartbeatRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // Unix timestamp milliseconds + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeartbeatRequest) Reset() { + *x = HeartbeatRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeartbeatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeartbeatRequest) ProtoMessage() {} + +func (x *HeartbeatRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[22] + 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 HeartbeatRequest.ProtoReflect.Descriptor instead. +func (*HeartbeatRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{22} +} + +func (x *HeartbeatRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *HeartbeatRequest) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +// HeartbeatResponse confirms heartbeat receipt +type HeartbeatResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + ServerTimestamp int64 `protobuf:"varint,2,opt,name=server_timestamp,json=serverTimestamp,proto3" json:"server_timestamp,omitempty"` // Server timestamp for clock sync + PendingMessages int32 `protobuf:"varint,3,opt,name=pending_messages,json=pendingMessages,proto3" json:"pending_messages,omitempty"` // Number of pending messages for this party + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *HeartbeatResponse) Reset() { + *x = HeartbeatResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *HeartbeatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*HeartbeatResponse) ProtoMessage() {} + +func (x *HeartbeatResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[23] + 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 HeartbeatResponse.ProtoReflect.Descriptor instead. +func (*HeartbeatResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{23} +} + +func (x *HeartbeatResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *HeartbeatResponse) GetServerTimestamp() int64 { + if x != nil { + return x.ServerTimestamp + } + return 0 +} + +func (x *HeartbeatResponse) GetPendingMessages() int32 { + if x != nil { + return x.PendingMessages + } + return 0 +} + +// DeviceInfo contains device information +type DeviceInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + DeviceType string `protobuf:"bytes,1,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` // server, mobile, web + DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` + Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` + AppVersion string `protobuf:"bytes,4,opt,name=app_version,json=appVersion,proto3" json:"app_version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeviceInfo) Reset() { + *x = DeviceInfo{} + mi := &file_api_proto_message_router_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeviceInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeviceInfo) ProtoMessage() {} + +func (x *DeviceInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[24] + 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 DeviceInfo.ProtoReflect.Descriptor instead. +func (*DeviceInfo) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{24} +} + +func (x *DeviceInfo) GetDeviceType() string { + if x != nil { + return x.DeviceType + } + return "" +} + +func (x *DeviceInfo) GetDeviceId() string { + if x != nil { + return x.DeviceId + } + return "" +} + +func (x *DeviceInfo) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *DeviceInfo) GetAppVersion() string { + if x != nil { + return x.AppVersion + } + return "" +} + +// PartyInfo contains party information +type PartyInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + PartyIndex int32 `protobuf:"varint,2,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` + DeviceInfo *DeviceInfo `protobuf:"bytes,3,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *PartyInfo) Reset() { + *x = PartyInfo{} + mi := &file_api_proto_message_router_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *PartyInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PartyInfo) ProtoMessage() {} + +func (x *PartyInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[25] + 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 PartyInfo.ProtoReflect.Descriptor instead. +func (*PartyInfo) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{25} +} + +func (x *PartyInfo) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *PartyInfo) GetPartyIndex() int32 { + if x != nil { + return x.PartyIndex + } + return 0 +} + +func (x *PartyInfo) GetDeviceInfo() *DeviceInfo { + if x != nil { + return x.DeviceInfo + } + return nil +} + +// SessionInfo contains session information +type SessionInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // keygen, sign + ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` + ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` + MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // For sign sessions + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` + KeygenSessionId string `protobuf:"bytes,7,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` // For sign sessions: which keygen session's shares to use + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SessionInfo) Reset() { + *x = SessionInfo{} + mi := &file_api_proto_message_router_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SessionInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionInfo) ProtoMessage() {} + +func (x *SessionInfo) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[26] + 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 SessionInfo.ProtoReflect.Descriptor instead. +func (*SessionInfo) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{26} +} + +func (x *SessionInfo) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *SessionInfo) GetSessionType() string { + if x != nil { + return x.SessionType + } + return "" +} + +func (x *SessionInfo) GetThresholdN() int32 { + if x != nil { + return x.ThresholdN + } + return 0 +} + +func (x *SessionInfo) GetThresholdT() int32 { + if x != nil { + return x.ThresholdT + } + return 0 +} + +func (x *SessionInfo) GetMessageHash() []byte { + if x != nil { + return x.MessageHash + } + return nil +} + +func (x *SessionInfo) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *SessionInfo) GetKeygenSessionId() string { + if x != nil { + return x.KeygenSessionId + } + return "" +} + +// JoinSessionRequest joins a session +type JoinSessionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + JoinToken string `protobuf:"bytes,3,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"` + DeviceInfo *DeviceInfo `protobuf:"bytes,4,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JoinSessionRequest) Reset() { + *x = JoinSessionRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JoinSessionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinSessionRequest) ProtoMessage() {} + +func (x *JoinSessionRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[27] + 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 JoinSessionRequest.ProtoReflect.Descriptor instead. +func (*JoinSessionRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{27} +} + +func (x *JoinSessionRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *JoinSessionRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *JoinSessionRequest) GetJoinToken() string { + if x != nil { + return x.JoinToken + } + return "" +} + +func (x *JoinSessionRequest) GetDeviceInfo() *DeviceInfo { + if x != nil { + return x.DeviceInfo + } + return nil +} + +// JoinSessionResponse returns session info after joining +type JoinSessionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + SessionInfo *SessionInfo `protobuf:"bytes,2,opt,name=session_info,json=sessionInfo,proto3" json:"session_info,omitempty"` + OtherParties []*PartyInfo `protobuf:"bytes,3,rep,name=other_parties,json=otherParties,proto3" json:"other_parties,omitempty"` // All participants in the session + PartyIndex int32 `protobuf:"varint,4,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // This party's index + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JoinSessionResponse) Reset() { + *x = JoinSessionResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JoinSessionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JoinSessionResponse) ProtoMessage() {} + +func (x *JoinSessionResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[28] + 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 JoinSessionResponse.ProtoReflect.Descriptor instead. +func (*JoinSessionResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{28} +} + +func (x *JoinSessionResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *JoinSessionResponse) GetSessionInfo() *SessionInfo { + if x != nil { + return x.SessionInfo + } + return nil +} + +func (x *JoinSessionResponse) GetOtherParties() []*PartyInfo { + if x != nil { + return x.OtherParties + } + return nil +} + +func (x *JoinSessionResponse) GetPartyIndex() int32 { + if x != nil { + return x.PartyIndex + } + return 0 +} + +// MarkPartyReadyRequest marks a party as ready +type MarkPartyReadyRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MarkPartyReadyRequest) Reset() { + *x = MarkPartyReadyRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MarkPartyReadyRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarkPartyReadyRequest) ProtoMessage() {} + +func (x *MarkPartyReadyRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[29] + 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 MarkPartyReadyRequest.ProtoReflect.Descriptor instead. +func (*MarkPartyReadyRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{29} +} + +func (x *MarkPartyReadyRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *MarkPartyReadyRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +// MarkPartyReadyResponse confirms ready status +type MarkPartyReadyResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + AllReady bool `protobuf:"varint,2,opt,name=all_ready,json=allReady,proto3" json:"all_ready,omitempty"` // True if all parties are ready + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MarkPartyReadyResponse) Reset() { + *x = MarkPartyReadyResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MarkPartyReadyResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MarkPartyReadyResponse) ProtoMessage() {} + +func (x *MarkPartyReadyResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[30] + 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 MarkPartyReadyResponse.ProtoReflect.Descriptor instead. +func (*MarkPartyReadyResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{30} +} + +func (x *MarkPartyReadyResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *MarkPartyReadyResponse) GetAllReady() bool { + if x != nil { + return x.AllReady + } + return false +} + +// ReportCompletionRequest reports protocol completion +type ReportCompletionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // For keygen: resulting public key + Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` // For signing: resulting signature + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReportCompletionRequest) Reset() { + *x = ReportCompletionRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReportCompletionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReportCompletionRequest) ProtoMessage() {} + +func (x *ReportCompletionRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[31] + 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 ReportCompletionRequest.ProtoReflect.Descriptor instead. +func (*ReportCompletionRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{31} +} + +func (x *ReportCompletionRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *ReportCompletionRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *ReportCompletionRequest) GetPublicKey() []byte { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *ReportCompletionRequest) GetSignature() []byte { + if x != nil { + return x.Signature + } + return nil +} + +// ReportCompletionResponse confirms completion report +type ReportCompletionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + AllCompleted bool `protobuf:"varint,2,opt,name=all_completed,json=allCompleted,proto3" json:"all_completed,omitempty"` // True if all parties completed + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ReportCompletionResponse) Reset() { + *x = ReportCompletionResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ReportCompletionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReportCompletionResponse) ProtoMessage() {} + +func (x *ReportCompletionResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[32] + 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 ReportCompletionResponse.ProtoReflect.Descriptor instead. +func (*ReportCompletionResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{32} +} + +func (x *ReportCompletionResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +func (x *ReportCompletionResponse) GetAllCompleted() bool { + if x != nil { + return x.AllCompleted + } + return false +} + +// GetSessionStatusRequest requests session status +type GetSessionStatusRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetSessionStatusRequest) Reset() { + *x = GetSessionStatusRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSessionStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSessionStatusRequest) ProtoMessage() {} + +func (x *GetSessionStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[33] + 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 GetSessionStatusRequest.ProtoReflect.Descriptor instead. +func (*GetSessionStatusRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{33} +} + +func (x *GetSessionStatusRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +// GetSessionStatusResponse returns session status +type GetSessionStatusResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // created, in_progress, completed, failed, expired + ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` + ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` + Participants []*PartyInfo `protobuf:"bytes,5,rep,name=participants,proto3" json:"participants,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetSessionStatusResponse) Reset() { + *x = GetSessionStatusResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSessionStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSessionStatusResponse) ProtoMessage() {} + +func (x *GetSessionStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[34] + 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 GetSessionStatusResponse.ProtoReflect.Descriptor instead. +func (*GetSessionStatusResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{34} +} + +func (x *GetSessionStatusResponse) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *GetSessionStatusResponse) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetSessionStatusResponse) GetThresholdN() int32 { + if x != nil { + return x.ThresholdN + } + return 0 +} + +func (x *GetSessionStatusResponse) GetThresholdT() int32 { + if x != nil { + return x.ThresholdT + } + return 0 +} + +func (x *GetSessionStatusResponse) GetParticipants() []*PartyInfo { + if x != nil { + return x.Participants + } + return nil +} + +// SubmitDelegateShareRequest submits user's share from delegate party +type SubmitDelegateShareRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` + EncryptedShare []byte `protobuf:"bytes,3,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // Encrypted share for user + PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key from keygen + PartyIndex int32 `protobuf:"varint,5,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // Party's index in the session + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubmitDelegateShareRequest) Reset() { + *x = SubmitDelegateShareRequest{} + mi := &file_api_proto_message_router_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubmitDelegateShareRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitDelegateShareRequest) ProtoMessage() {} + +func (x *SubmitDelegateShareRequest) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[35] + 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 SubmitDelegateShareRequest.ProtoReflect.Descriptor instead. +func (*SubmitDelegateShareRequest) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{35} +} + +func (x *SubmitDelegateShareRequest) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *SubmitDelegateShareRequest) GetPartyId() string { + if x != nil { + return x.PartyId + } + return "" +} + +func (x *SubmitDelegateShareRequest) GetEncryptedShare() []byte { + if x != nil { + return x.EncryptedShare + } + return nil +} + +func (x *SubmitDelegateShareRequest) GetPublicKey() []byte { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *SubmitDelegateShareRequest) GetPartyIndex() int32 { + if x != nil { + return x.PartyIndex + } + return 0 +} + +// SubmitDelegateShareResponse contains result of share submission +type SubmitDelegateShareResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SubmitDelegateShareResponse) Reset() { + *x = SubmitDelegateShareResponse{} + mi := &file_api_proto_message_router_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SubmitDelegateShareResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitDelegateShareResponse) ProtoMessage() {} + +func (x *SubmitDelegateShareResponse) ProtoReflect() protoreflect.Message { + mi := &file_api_proto_message_router_proto_msgTypes[36] + 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 SubmitDelegateShareResponse.ProtoReflect.Descriptor instead. +func (*SubmitDelegateShareResponse) Descriptor() ([]byte, []int) { + return file_api_proto_message_router_proto_rawDescGZIP(), []int{36} +} + +func (x *SubmitDelegateShareResponse) GetSuccess() bool { + if x != nil { + return x.Success + } + return false +} + +var File_api_proto_message_router_proto protoreflect.FileDescriptor + +const file_api_proto_message_router_proto_rawDesc = "" + + "\n" + + "\x1eapi/proto/message_router.proto\x12\rmpc.router.v1\"\xd2\x01\n" + + "\x13RouteMessageRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x1d\n" + + "\n" + + "from_party\x18\x02 \x01(\tR\tfromParty\x12\x1d\n" + + "\n" + + "to_parties\x18\x03 \x03(\tR\ttoParties\x12!\n" + + "\fround_number\x18\x04 \x01(\x05R\vroundNumber\x12!\n" + + "\fmessage_type\x18\x05 \x01(\tR\vmessageType\x12\x18\n" + + "\apayload\x18\x06 \x01(\fR\apayload\"O\n" + + "\x14RouteMessageResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1d\n" + + "\n" + + "message_id\x18\x02 \x01(\tR\tmessageId\"T\n" + + "\x18SubscribeMessagesRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\"\x8b\x02\n" + + "\n" + + "MPCMessage\x12\x1d\n" + + "\n" + + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" + + "\n" + + "session_id\x18\x02 \x01(\tR\tsessionId\x12\x1d\n" + + "\n" + + "from_party\x18\x03 \x01(\tR\tfromParty\x12!\n" + + "\fis_broadcast\x18\x04 \x01(\bR\visBroadcast\x12!\n" + + "\fround_number\x18\x05 \x01(\x05R\vroundNumber\x12!\n" + + "\fmessage_type\x18\x06 \x01(\tR\vmessageType\x12\x18\n" + + "\apayload\x18\a \x01(\fR\apayload\x12\x1d\n" + + "\n" + + "created_at\x18\b \x01(\x03R\tcreatedAt\"~\n" + + "\x19GetPendingMessagesRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\x12'\n" + + "\x0fafter_timestamp\x18\x03 \x01(\x03R\x0eafterTimestamp\"S\n" + + "\x1aGetPendingMessagesResponse\x125\n" + + "\bmessages\x18\x01 \x03(\v2\x19.mpc.router.v1.MPCMessageR\bmessages\"`\n" + + "\x13NotificationChannel\x12\x14\n" + + "\x05email\x18\x01 \x01(\tR\x05email\x12\x14\n" + + "\x05phone\x18\x02 \x01(\tR\x05phone\x12\x1d\n" + + "\n" + + "push_token\x18\x03 \x01(\tR\tpushToken\"\xb2\x01\n" + + "\x14RegisterPartyRequest\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1d\n" + + "\n" + + "party_role\x18\x02 \x01(\tR\tpartyRole\x12\x18\n" + + "\aversion\x18\x03 \x01(\tR\aversion\x12F\n" + + "\fnotification\x18\x04 \x01(\v2\".mpc.router.v1.NotificationChannelR\fnotification\"p\n" + + "\x15RegisterPartyResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\x12#\n" + + "\rregistered_at\x18\x03 \x01(\x03R\fregisteredAt\"[\n" + + "\x1dSubscribeSessionEventsRequest\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" + + "\vevent_types\x18\x02 \x03(\tR\n" + + "eventTypes\"\x94\x04\n" + + "\fSessionEvent\x12\x19\n" + + "\bevent_id\x18\x01 \x01(\tR\aeventId\x12\x1d\n" + + "\n" + + "event_type\x18\x02 \x01(\tR\teventType\x12\x1d\n" + + "\n" + + "session_id\x18\x03 \x01(\tR\tsessionId\x12\x1f\n" + + "\vthreshold_n\x18\x04 \x01(\x05R\n" + + "thresholdN\x12\x1f\n" + + "\vthreshold_t\x18\x05 \x01(\x05R\n" + + "thresholdT\x12)\n" + + "\x10selected_parties\x18\x06 \x03(\tR\x0fselectedParties\x12L\n" + + "\vjoin_tokens\x18\a \x03(\v2+.mpc.router.v1.SessionEvent.JoinTokensEntryR\n" + + "joinTokens\x12!\n" + + "\fmessage_hash\x18\b \x01(\fR\vmessageHash\x12\x1d\n" + + "\n" + + "created_at\x18\t \x01(\x03R\tcreatedAt\x12\x1d\n" + + "\n" + + "expires_at\x18\n" + + " \x01(\x03R\texpiresAt\x12P\n" + + "\x13delegate_user_share\x18\v \x01(\v2 .mpc.router.v1.DelegateUserShareR\x11delegateUserShare\x1a=\n" + + "\x0fJoinTokensEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x89\x01\n" + + "\x11DelegateUserShare\x12*\n" + + "\x11delegate_party_id\x18\x01 \x01(\tR\x0fdelegatePartyId\x12'\n" + + "\x0fencrypted_share\x18\x02 \x01(\fR\x0eencryptedShare\x12\x1f\n" + + "\vparty_index\x18\x03 \x01(\x05R\n" + + "partyIndex\"O\n" + + "\x1aPublishSessionEventRequest\x121\n" + + "\x05event\x18\x01 \x01(\v2\x1b.mpc.router.v1.SessionEventR\x05event\"b\n" + + "\x1bPublishSessionEventResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12)\n" + + "\x10subscriber_count\x18\x02 \x01(\x05R\x0fsubscriberCount\"_\n" + + "\x1bGetRegisteredPartiesRequest\x12\x1f\n" + + "\vrole_filter\x18\x01 \x01(\tR\n" + + "roleFilter\x12\x1f\n" + + "\vonly_online\x18\x02 \x01(\bR\n" + + "onlyOnline\"\xe7\x01\n" + + "\x0fRegisteredParty\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x12\n" + + "\x04role\x18\x02 \x01(\tR\x04role\x12\x16\n" + + "\x06online\x18\x03 \x01(\bR\x06online\x12#\n" + + "\rregistered_at\x18\x04 \x01(\x03R\fregisteredAt\x12 \n" + + "\flast_seen_at\x18\x05 \x01(\x03R\n" + + "lastSeenAt\x12F\n" + + "\fnotification\x18\x06 \x01(\v2\".mpc.router.v1.NotificationChannelR\fnotification\"y\n" + + "\x1cGetRegisteredPartiesResponse\x128\n" + + "\aparties\x18\x01 \x03(\v2\x1e.mpc.router.v1.RegisteredPartyR\aparties\x12\x1f\n" + + "\vtotal_count\x18\x02 \x01(\x05R\n" + + "totalCount\"\xb3\x01\n" + + "\x19AcknowledgeMessageRequest\x12\x1d\n" + + "\n" + + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" + + "\n" + + "session_id\x18\x03 \x01(\tR\tsessionId\x12\x18\n" + + "\asuccess\x18\x04 \x01(\bR\asuccess\x12#\n" + + "\rerror_message\x18\x05 \x01(\tR\ferrorMessage\"P\n" + + "\x1aAcknowledgeMessageResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x18\n" + + "\amessage\x18\x02 \x01(\tR\amessage\"W\n" + + "\x17GetMessageStatusRequest\x12\x1d\n" + + "\n" + + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" + + "\n" + + "session_id\x18\x02 \x01(\tR\tsessionId\"\xb7\x01\n" + + "\x15MessageDeliveryStatus\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\x12!\n" + + "\fdelivered_at\x18\x03 \x01(\x03R\vdeliveredAt\x12'\n" + + "\x0facknowledged_at\x18\x04 \x01(\x03R\x0eacknowledgedAt\x12\x1f\n" + + "\vretry_count\x18\x05 \x01(\x05R\n" + + "retryCount\"\xc9\x01\n" + + "\x18GetMessageStatusResponse\x12\x1d\n" + + "\n" + + "message_id\x18\x01 \x01(\tR\tmessageId\x12\x1d\n" + + "\n" + + "session_id\x18\x02 \x01(\tR\tsessionId\x12D\n" + + "\n" + + "deliveries\x18\x03 \x03(\v2$.mpc.router.v1.MessageDeliveryStatusR\n" + + "deliveries\x12)\n" + + "\x10all_acknowledged\x18\x04 \x01(\bR\x0fallAcknowledged\"K\n" + + "\x10HeartbeatRequest\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1c\n" + + "\ttimestamp\x18\x02 \x01(\x03R\ttimestamp\"\x83\x01\n" + + "\x11HeartbeatResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12)\n" + + "\x10server_timestamp\x18\x02 \x01(\x03R\x0fserverTimestamp\x12)\n" + + "\x10pending_messages\x18\x03 \x01(\x05R\x0fpendingMessages\"\x87\x01\n" + + "\n" + + "DeviceInfo\x12\x1f\n" + + "\vdevice_type\x18\x01 \x01(\tR\n" + + "deviceType\x12\x1b\n" + + "\tdevice_id\x18\x02 \x01(\tR\bdeviceId\x12\x1a\n" + + "\bplatform\x18\x03 \x01(\tR\bplatform\x12\x1f\n" + + "\vapp_version\x18\x04 \x01(\tR\n" + + "appVersion\"\x83\x01\n" + + "\tPartyInfo\x12\x19\n" + + "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" + + "\vparty_index\x18\x02 \x01(\x05R\n" + + "partyIndex\x12:\n" + + "\vdevice_info\x18\x03 \x01(\v2\x19.mpc.router.v1.DeviceInfoR\n" + + "deviceInfo\"\xf8\x01\n" + + "\vSessionInfo\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + + "\fsession_type\x18\x02 \x01(\tR\vsessionType\x12\x1f\n" + + "\vthreshold_n\x18\x03 \x01(\x05R\n" + + "thresholdN\x12\x1f\n" + + "\vthreshold_t\x18\x04 \x01(\x05R\n" + + "thresholdT\x12!\n" + + "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12\x16\n" + + "\x06status\x18\x06 \x01(\tR\x06status\x12*\n" + + "\x11keygen_session_id\x18\a \x01(\tR\x0fkeygenSessionId\"\xa9\x01\n" + + "\x12JoinSessionRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" + + "\n" + + "join_token\x18\x03 \x01(\tR\tjoinToken\x12:\n" + + "\vdevice_info\x18\x04 \x01(\v2\x19.mpc.router.v1.DeviceInfoR\n" + + "deviceInfo\"\xce\x01\n" + + "\x13JoinSessionResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12=\n" + + "\fsession_info\x18\x02 \x01(\v2\x1a.mpc.router.v1.SessionInfoR\vsessionInfo\x12=\n" + + "\rother_parties\x18\x03 \x03(\v2\x18.mpc.router.v1.PartyInfoR\fotherParties\x12\x1f\n" + + "\vparty_index\x18\x04 \x01(\x05R\n" + + "partyIndex\"Q\n" + + "\x15MarkPartyReadyRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\"O\n" + + "\x16MarkPartyReadyResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1b\n" + + "\tall_ready\x18\x02 \x01(\bR\ballReady\"\x90\x01\n" + + "\x17ReportCompletionRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" + + "\n" + + "public_key\x18\x03 \x01(\fR\tpublicKey\x12\x1c\n" + + "\tsignature\x18\x04 \x01(\fR\tsignature\"Y\n" + + "\x18ReportCompletionResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" + + "\rall_completed\x18\x02 \x01(\bR\fallCompleted\"8\n" + + "\x17GetSessionStatusRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\"\xd1\x01\n" + + "\x18GetSessionStatusResponse\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x16\n" + + "\x06status\x18\x02 \x01(\tR\x06status\x12\x1f\n" + + "\vthreshold_n\x18\x03 \x01(\x05R\n" + + "thresholdN\x12\x1f\n" + + "\vthreshold_t\x18\x04 \x01(\x05R\n" + + "thresholdT\x12<\n" + + "\fparticipants\x18\x05 \x03(\v2\x18.mpc.router.v1.PartyInfoR\fparticipants\"\xbf\x01\n" + + "\x1aSubmitDelegateShareRequest\x12\x1d\n" + + "\n" + + "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + + "\bparty_id\x18\x02 \x01(\tR\apartyId\x12'\n" + + "\x0fencrypted_share\x18\x03 \x01(\fR\x0eencryptedShare\x12\x1d\n" + + "\n" + + "public_key\x18\x04 \x01(\fR\tpublicKey\x12\x1f\n" + + "\vparty_index\x18\x05 \x01(\x05R\n" + + "partyIndex\"7\n" + + "\x1bSubmitDelegateShareResponse\x12\x18\n" + + "\asuccess\x18\x01 \x01(\bR\asuccess2\xdd\v\n" + + "\rMessageRouter\x12W\n" + + "\fRouteMessage\x12\".mpc.router.v1.RouteMessageRequest\x1a#.mpc.router.v1.RouteMessageResponse\x12Y\n" + + "\x11SubscribeMessages\x12'.mpc.router.v1.SubscribeMessagesRequest\x1a\x19.mpc.router.v1.MPCMessage0\x01\x12i\n" + + "\x12GetPendingMessages\x12(.mpc.router.v1.GetPendingMessagesRequest\x1a).mpc.router.v1.GetPendingMessagesResponse\x12i\n" + + "\x12AcknowledgeMessage\x12(.mpc.router.v1.AcknowledgeMessageRequest\x1a).mpc.router.v1.AcknowledgeMessageResponse\x12c\n" + + "\x10GetMessageStatus\x12&.mpc.router.v1.GetMessageStatusRequest\x1a'.mpc.router.v1.GetMessageStatusResponse\x12Z\n" + + "\rRegisterParty\x12#.mpc.router.v1.RegisterPartyRequest\x1a$.mpc.router.v1.RegisterPartyResponse\x12N\n" + + "\tHeartbeat\x12\x1f.mpc.router.v1.HeartbeatRequest\x1a .mpc.router.v1.HeartbeatResponse\x12e\n" + + "\x16SubscribeSessionEvents\x12,.mpc.router.v1.SubscribeSessionEventsRequest\x1a\x1b.mpc.router.v1.SessionEvent0\x01\x12l\n" + + "\x13PublishSessionEvent\x12).mpc.router.v1.PublishSessionEventRequest\x1a*.mpc.router.v1.PublishSessionEventResponse\x12o\n" + + "\x14GetRegisteredParties\x12*.mpc.router.v1.GetRegisteredPartiesRequest\x1a+.mpc.router.v1.GetRegisteredPartiesResponse\x12T\n" + + "\vJoinSession\x12!.mpc.router.v1.JoinSessionRequest\x1a\".mpc.router.v1.JoinSessionResponse\x12]\n" + + "\x0eMarkPartyReady\x12$.mpc.router.v1.MarkPartyReadyRequest\x1a%.mpc.router.v1.MarkPartyReadyResponse\x12c\n" + + "\x10ReportCompletion\x12&.mpc.router.v1.ReportCompletionRequest\x1a'.mpc.router.v1.ReportCompletionResponse\x12c\n" + + "\x10GetSessionStatus\x12&.mpc.router.v1.GetSessionStatusRequest\x1a'.mpc.router.v1.GetSessionStatusResponse\x12l\n" + + "\x13SubmitDelegateShare\x12).mpc.router.v1.SubmitDelegateShareRequest\x1a*.mpc.router.v1.SubmitDelegateShareResponseB;Z9github.com/rwadurian/mpc-system/api/grpc/router/v1;routerb\x06proto3" + +var ( + file_api_proto_message_router_proto_rawDescOnce sync.Once + file_api_proto_message_router_proto_rawDescData []byte +) + +func file_api_proto_message_router_proto_rawDescGZIP() []byte { + file_api_proto_message_router_proto_rawDescOnce.Do(func() { + file_api_proto_message_router_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_proto_message_router_proto_rawDesc), len(file_api_proto_message_router_proto_rawDesc))) + }) + return file_api_proto_message_router_proto_rawDescData +} + +var file_api_proto_message_router_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_api_proto_message_router_proto_goTypes = []any{ + (*RouteMessageRequest)(nil), // 0: mpc.router.v1.RouteMessageRequest + (*RouteMessageResponse)(nil), // 1: mpc.router.v1.RouteMessageResponse + (*SubscribeMessagesRequest)(nil), // 2: mpc.router.v1.SubscribeMessagesRequest + (*MPCMessage)(nil), // 3: mpc.router.v1.MPCMessage + (*GetPendingMessagesRequest)(nil), // 4: mpc.router.v1.GetPendingMessagesRequest + (*GetPendingMessagesResponse)(nil), // 5: mpc.router.v1.GetPendingMessagesResponse + (*NotificationChannel)(nil), // 6: mpc.router.v1.NotificationChannel + (*RegisterPartyRequest)(nil), // 7: mpc.router.v1.RegisterPartyRequest + (*RegisterPartyResponse)(nil), // 8: mpc.router.v1.RegisterPartyResponse + (*SubscribeSessionEventsRequest)(nil), // 9: mpc.router.v1.SubscribeSessionEventsRequest + (*SessionEvent)(nil), // 10: mpc.router.v1.SessionEvent + (*DelegateUserShare)(nil), // 11: mpc.router.v1.DelegateUserShare + (*PublishSessionEventRequest)(nil), // 12: mpc.router.v1.PublishSessionEventRequest + (*PublishSessionEventResponse)(nil), // 13: mpc.router.v1.PublishSessionEventResponse + (*GetRegisteredPartiesRequest)(nil), // 14: mpc.router.v1.GetRegisteredPartiesRequest + (*RegisteredParty)(nil), // 15: mpc.router.v1.RegisteredParty + (*GetRegisteredPartiesResponse)(nil), // 16: mpc.router.v1.GetRegisteredPartiesResponse + (*AcknowledgeMessageRequest)(nil), // 17: mpc.router.v1.AcknowledgeMessageRequest + (*AcknowledgeMessageResponse)(nil), // 18: mpc.router.v1.AcknowledgeMessageResponse + (*GetMessageStatusRequest)(nil), // 19: mpc.router.v1.GetMessageStatusRequest + (*MessageDeliveryStatus)(nil), // 20: mpc.router.v1.MessageDeliveryStatus + (*GetMessageStatusResponse)(nil), // 21: mpc.router.v1.GetMessageStatusResponse + (*HeartbeatRequest)(nil), // 22: mpc.router.v1.HeartbeatRequest + (*HeartbeatResponse)(nil), // 23: mpc.router.v1.HeartbeatResponse + (*DeviceInfo)(nil), // 24: mpc.router.v1.DeviceInfo + (*PartyInfo)(nil), // 25: mpc.router.v1.PartyInfo + (*SessionInfo)(nil), // 26: mpc.router.v1.SessionInfo + (*JoinSessionRequest)(nil), // 27: mpc.router.v1.JoinSessionRequest + (*JoinSessionResponse)(nil), // 28: mpc.router.v1.JoinSessionResponse + (*MarkPartyReadyRequest)(nil), // 29: mpc.router.v1.MarkPartyReadyRequest + (*MarkPartyReadyResponse)(nil), // 30: mpc.router.v1.MarkPartyReadyResponse + (*ReportCompletionRequest)(nil), // 31: mpc.router.v1.ReportCompletionRequest + (*ReportCompletionResponse)(nil), // 32: mpc.router.v1.ReportCompletionResponse + (*GetSessionStatusRequest)(nil), // 33: mpc.router.v1.GetSessionStatusRequest + (*GetSessionStatusResponse)(nil), // 34: mpc.router.v1.GetSessionStatusResponse + (*SubmitDelegateShareRequest)(nil), // 35: mpc.router.v1.SubmitDelegateShareRequest + (*SubmitDelegateShareResponse)(nil), // 36: mpc.router.v1.SubmitDelegateShareResponse + nil, // 37: mpc.router.v1.SessionEvent.JoinTokensEntry +} +var file_api_proto_message_router_proto_depIdxs = []int32{ + 3, // 0: mpc.router.v1.GetPendingMessagesResponse.messages:type_name -> mpc.router.v1.MPCMessage + 6, // 1: mpc.router.v1.RegisterPartyRequest.notification:type_name -> mpc.router.v1.NotificationChannel + 37, // 2: mpc.router.v1.SessionEvent.join_tokens:type_name -> mpc.router.v1.SessionEvent.JoinTokensEntry + 11, // 3: mpc.router.v1.SessionEvent.delegate_user_share:type_name -> mpc.router.v1.DelegateUserShare + 10, // 4: mpc.router.v1.PublishSessionEventRequest.event:type_name -> mpc.router.v1.SessionEvent + 6, // 5: mpc.router.v1.RegisteredParty.notification:type_name -> mpc.router.v1.NotificationChannel + 15, // 6: mpc.router.v1.GetRegisteredPartiesResponse.parties:type_name -> mpc.router.v1.RegisteredParty + 20, // 7: mpc.router.v1.GetMessageStatusResponse.deliveries:type_name -> mpc.router.v1.MessageDeliveryStatus + 24, // 8: mpc.router.v1.PartyInfo.device_info:type_name -> mpc.router.v1.DeviceInfo + 24, // 9: mpc.router.v1.JoinSessionRequest.device_info:type_name -> mpc.router.v1.DeviceInfo + 26, // 10: mpc.router.v1.JoinSessionResponse.session_info:type_name -> mpc.router.v1.SessionInfo + 25, // 11: mpc.router.v1.JoinSessionResponse.other_parties:type_name -> mpc.router.v1.PartyInfo + 25, // 12: mpc.router.v1.GetSessionStatusResponse.participants:type_name -> mpc.router.v1.PartyInfo + 0, // 13: mpc.router.v1.MessageRouter.RouteMessage:input_type -> mpc.router.v1.RouteMessageRequest + 2, // 14: mpc.router.v1.MessageRouter.SubscribeMessages:input_type -> mpc.router.v1.SubscribeMessagesRequest + 4, // 15: mpc.router.v1.MessageRouter.GetPendingMessages:input_type -> mpc.router.v1.GetPendingMessagesRequest + 17, // 16: mpc.router.v1.MessageRouter.AcknowledgeMessage:input_type -> mpc.router.v1.AcknowledgeMessageRequest + 19, // 17: mpc.router.v1.MessageRouter.GetMessageStatus:input_type -> mpc.router.v1.GetMessageStatusRequest + 7, // 18: mpc.router.v1.MessageRouter.RegisterParty:input_type -> mpc.router.v1.RegisterPartyRequest + 22, // 19: mpc.router.v1.MessageRouter.Heartbeat:input_type -> mpc.router.v1.HeartbeatRequest + 9, // 20: mpc.router.v1.MessageRouter.SubscribeSessionEvents:input_type -> mpc.router.v1.SubscribeSessionEventsRequest + 12, // 21: mpc.router.v1.MessageRouter.PublishSessionEvent:input_type -> mpc.router.v1.PublishSessionEventRequest + 14, // 22: mpc.router.v1.MessageRouter.GetRegisteredParties:input_type -> mpc.router.v1.GetRegisteredPartiesRequest + 27, // 23: mpc.router.v1.MessageRouter.JoinSession:input_type -> mpc.router.v1.JoinSessionRequest + 29, // 24: mpc.router.v1.MessageRouter.MarkPartyReady:input_type -> mpc.router.v1.MarkPartyReadyRequest + 31, // 25: mpc.router.v1.MessageRouter.ReportCompletion:input_type -> mpc.router.v1.ReportCompletionRequest + 33, // 26: mpc.router.v1.MessageRouter.GetSessionStatus:input_type -> mpc.router.v1.GetSessionStatusRequest + 35, // 27: mpc.router.v1.MessageRouter.SubmitDelegateShare:input_type -> mpc.router.v1.SubmitDelegateShareRequest + 1, // 28: mpc.router.v1.MessageRouter.RouteMessage:output_type -> mpc.router.v1.RouteMessageResponse + 3, // 29: mpc.router.v1.MessageRouter.SubscribeMessages:output_type -> mpc.router.v1.MPCMessage + 5, // 30: mpc.router.v1.MessageRouter.GetPendingMessages:output_type -> mpc.router.v1.GetPendingMessagesResponse + 18, // 31: mpc.router.v1.MessageRouter.AcknowledgeMessage:output_type -> mpc.router.v1.AcknowledgeMessageResponse + 21, // 32: mpc.router.v1.MessageRouter.GetMessageStatus:output_type -> mpc.router.v1.GetMessageStatusResponse + 8, // 33: mpc.router.v1.MessageRouter.RegisterParty:output_type -> mpc.router.v1.RegisterPartyResponse + 23, // 34: mpc.router.v1.MessageRouter.Heartbeat:output_type -> mpc.router.v1.HeartbeatResponse + 10, // 35: mpc.router.v1.MessageRouter.SubscribeSessionEvents:output_type -> mpc.router.v1.SessionEvent + 13, // 36: mpc.router.v1.MessageRouter.PublishSessionEvent:output_type -> mpc.router.v1.PublishSessionEventResponse + 16, // 37: mpc.router.v1.MessageRouter.GetRegisteredParties:output_type -> mpc.router.v1.GetRegisteredPartiesResponse + 28, // 38: mpc.router.v1.MessageRouter.JoinSession:output_type -> mpc.router.v1.JoinSessionResponse + 30, // 39: mpc.router.v1.MessageRouter.MarkPartyReady:output_type -> mpc.router.v1.MarkPartyReadyResponse + 32, // 40: mpc.router.v1.MessageRouter.ReportCompletion:output_type -> mpc.router.v1.ReportCompletionResponse + 34, // 41: mpc.router.v1.MessageRouter.GetSessionStatus:output_type -> mpc.router.v1.GetSessionStatusResponse + 36, // 42: mpc.router.v1.MessageRouter.SubmitDelegateShare:output_type -> mpc.router.v1.SubmitDelegateShareResponse + 28, // [28:43] is the sub-list for method output_type + 13, // [13:28] is the sub-list for method input_type + 13, // [13:13] is the sub-list for extension type_name + 13, // [13:13] is the sub-list for extension extendee + 0, // [0:13] is the sub-list for field type_name +} + +func init() { file_api_proto_message_router_proto_init() } +func file_api_proto_message_router_proto_init() { + if File_api_proto_message_router_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_proto_message_router_proto_rawDesc), len(file_api_proto_message_router_proto_rawDesc)), + NumEnums: 0, + NumMessages: 38, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_api_proto_message_router_proto_goTypes, + DependencyIndexes: file_api_proto_message_router_proto_depIdxs, + MessageInfos: file_api_proto_message_router_proto_msgTypes, + }.Build() + File_api_proto_message_router_proto = out.File + file_api_proto_message_router_proto_goTypes = nil + file_api_proto_message_router_proto_depIdxs = nil +} diff --git a/backend/mpc-system/api/proto/message_router.proto b/backend/mpc-system/api/proto/message_router.proto index a8ae5054..f3f29ed2 100644 --- a/backend/mpc-system/api/proto/message_router.proto +++ b/backend/mpc-system/api/proto/message_router.proto @@ -286,6 +286,7 @@ message SessionInfo { int32 threshold_t = 4; bytes message_hash = 5; // For sign sessions string status = 6; + string keygen_session_id = 7; // For sign sessions: which keygen session's shares to use } // JoinSessionRequest joins a session diff --git a/backend/mpc-system/api/proto/message_router_grpc.pb.go b/backend/mpc-system/api/proto/message_router_grpc.pb.go new file mode 100644 index 00000000..7ed924ac --- /dev/null +++ b/backend/mpc-system/api/proto/message_router_grpc.pb.go @@ -0,0 +1,700 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.0 +// - protoc v6.33.1 +// source: api/proto/message_router.proto + +package router + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MessageRouter_RouteMessage_FullMethodName = "/mpc.router.v1.MessageRouter/RouteMessage" + MessageRouter_SubscribeMessages_FullMethodName = "/mpc.router.v1.MessageRouter/SubscribeMessages" + MessageRouter_GetPendingMessages_FullMethodName = "/mpc.router.v1.MessageRouter/GetPendingMessages" + MessageRouter_AcknowledgeMessage_FullMethodName = "/mpc.router.v1.MessageRouter/AcknowledgeMessage" + MessageRouter_GetMessageStatus_FullMethodName = "/mpc.router.v1.MessageRouter/GetMessageStatus" + MessageRouter_RegisterParty_FullMethodName = "/mpc.router.v1.MessageRouter/RegisterParty" + MessageRouter_Heartbeat_FullMethodName = "/mpc.router.v1.MessageRouter/Heartbeat" + MessageRouter_SubscribeSessionEvents_FullMethodName = "/mpc.router.v1.MessageRouter/SubscribeSessionEvents" + MessageRouter_PublishSessionEvent_FullMethodName = "/mpc.router.v1.MessageRouter/PublishSessionEvent" + MessageRouter_GetRegisteredParties_FullMethodName = "/mpc.router.v1.MessageRouter/GetRegisteredParties" + MessageRouter_JoinSession_FullMethodName = "/mpc.router.v1.MessageRouter/JoinSession" + MessageRouter_MarkPartyReady_FullMethodName = "/mpc.router.v1.MessageRouter/MarkPartyReady" + MessageRouter_ReportCompletion_FullMethodName = "/mpc.router.v1.MessageRouter/ReportCompletion" + MessageRouter_GetSessionStatus_FullMethodName = "/mpc.router.v1.MessageRouter/GetSessionStatus" + MessageRouter_SubmitDelegateShare_FullMethodName = "/mpc.router.v1.MessageRouter/SubmitDelegateShare" +) + +// MessageRouterClient is the client API for MessageRouter service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MessageRouter service handles MPC message routing +// This is the ONLY service that server-parties need to connect to. +// All session operations are proxied through Message Router to Session Coordinator. +type MessageRouterClient interface { + // RouteMessage routes a message from one party to others + RouteMessage(ctx context.Context, in *RouteMessageRequest, opts ...grpc.CallOption) (*RouteMessageResponse, error) + // SubscribeMessages subscribes to messages for a party (streaming) + SubscribeMessages(ctx context.Context, in *SubscribeMessagesRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[MPCMessage], error) + // GetPendingMessages retrieves pending messages (polling alternative) + GetPendingMessages(ctx context.Context, in *GetPendingMessagesRequest, opts ...grpc.CallOption) (*GetPendingMessagesResponse, error) + // AcknowledgeMessage acknowledges receipt of a message + // Must be called after processing a message to confirm delivery + AcknowledgeMessage(ctx context.Context, in *AcknowledgeMessageRequest, opts ...grpc.CallOption) (*AcknowledgeMessageResponse, error) + // GetMessageStatus gets the delivery status of a message + GetMessageStatus(ctx context.Context, in *GetMessageStatusRequest, opts ...grpc.CallOption) (*GetMessageStatusResponse, error) + // RegisterParty registers a party with the message router (party actively connects) + RegisterParty(ctx context.Context, in *RegisterPartyRequest, opts ...grpc.CallOption) (*RegisterPartyResponse, error) + // Heartbeat sends a heartbeat to keep the party alive + Heartbeat(ctx context.Context, in *HeartbeatRequest, opts ...grpc.CallOption) (*HeartbeatResponse, error) + // SubscribeSessionEvents subscribes to session lifecycle events (session start, etc.) + SubscribeSessionEvents(ctx context.Context, in *SubscribeSessionEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SessionEvent], error) + // PublishSessionEvent publishes a session event (called by Session Coordinator) + PublishSessionEvent(ctx context.Context, in *PublishSessionEventRequest, opts ...grpc.CallOption) (*PublishSessionEventResponse, error) + // GetRegisteredParties returns all registered parties (for Session Coordinator party discovery) + GetRegisteredParties(ctx context.Context, in *GetRegisteredPartiesRequest, opts ...grpc.CallOption) (*GetRegisteredPartiesResponse, error) + // JoinSession joins a session (proxied to Session Coordinator) + JoinSession(ctx context.Context, in *JoinSessionRequest, opts ...grpc.CallOption) (*JoinSessionResponse, error) + // MarkPartyReady marks a party as ready (proxied to Session Coordinator) + MarkPartyReady(ctx context.Context, in *MarkPartyReadyRequest, opts ...grpc.CallOption) (*MarkPartyReadyResponse, error) + // ReportCompletion reports completion (proxied to Session Coordinator) + ReportCompletion(ctx context.Context, in *ReportCompletionRequest, opts ...grpc.CallOption) (*ReportCompletionResponse, error) + // GetSessionStatus gets session status (proxied to Session Coordinator) + GetSessionStatus(ctx context.Context, in *GetSessionStatusRequest, opts ...grpc.CallOption) (*GetSessionStatusResponse, error) + // SubmitDelegateShare submits user's share from delegate party (proxied to Session Coordinator) + SubmitDelegateShare(ctx context.Context, in *SubmitDelegateShareRequest, opts ...grpc.CallOption) (*SubmitDelegateShareResponse, error) +} + +type messageRouterClient struct { + cc grpc.ClientConnInterface +} + +func NewMessageRouterClient(cc grpc.ClientConnInterface) MessageRouterClient { + return &messageRouterClient{cc} +} + +func (c *messageRouterClient) RouteMessage(ctx context.Context, in *RouteMessageRequest, opts ...grpc.CallOption) (*RouteMessageResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RouteMessageResponse) + err := c.cc.Invoke(ctx, MessageRouter_RouteMessage_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) SubscribeMessages(ctx context.Context, in *SubscribeMessagesRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[MPCMessage], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MessageRouter_ServiceDesc.Streams[0], MessageRouter_SubscribeMessages_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[SubscribeMessagesRequest, MPCMessage]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MessageRouter_SubscribeMessagesClient = grpc.ServerStreamingClient[MPCMessage] + +func (c *messageRouterClient) GetPendingMessages(ctx context.Context, in *GetPendingMessagesRequest, opts ...grpc.CallOption) (*GetPendingMessagesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetPendingMessagesResponse) + err := c.cc.Invoke(ctx, MessageRouter_GetPendingMessages_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) AcknowledgeMessage(ctx context.Context, in *AcknowledgeMessageRequest, opts ...grpc.CallOption) (*AcknowledgeMessageResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(AcknowledgeMessageResponse) + err := c.cc.Invoke(ctx, MessageRouter_AcknowledgeMessage_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) GetMessageStatus(ctx context.Context, in *GetMessageStatusRequest, opts ...grpc.CallOption) (*GetMessageStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetMessageStatusResponse) + err := c.cc.Invoke(ctx, MessageRouter_GetMessageStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) RegisterParty(ctx context.Context, in *RegisterPartyRequest, opts ...grpc.CallOption) (*RegisterPartyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RegisterPartyResponse) + err := c.cc.Invoke(ctx, MessageRouter_RegisterParty_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) Heartbeat(ctx context.Context, in *HeartbeatRequest, opts ...grpc.CallOption) (*HeartbeatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(HeartbeatResponse) + err := c.cc.Invoke(ctx, MessageRouter_Heartbeat_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) SubscribeSessionEvents(ctx context.Context, in *SubscribeSessionEventsRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[SessionEvent], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &MessageRouter_ServiceDesc.Streams[1], MessageRouter_SubscribeSessionEvents_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[SubscribeSessionEventsRequest, SessionEvent]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MessageRouter_SubscribeSessionEventsClient = grpc.ServerStreamingClient[SessionEvent] + +func (c *messageRouterClient) PublishSessionEvent(ctx context.Context, in *PublishSessionEventRequest, opts ...grpc.CallOption) (*PublishSessionEventResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(PublishSessionEventResponse) + err := c.cc.Invoke(ctx, MessageRouter_PublishSessionEvent_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) GetRegisteredParties(ctx context.Context, in *GetRegisteredPartiesRequest, opts ...grpc.CallOption) (*GetRegisteredPartiesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetRegisteredPartiesResponse) + err := c.cc.Invoke(ctx, MessageRouter_GetRegisteredParties_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) JoinSession(ctx context.Context, in *JoinSessionRequest, opts ...grpc.CallOption) (*JoinSessionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(JoinSessionResponse) + err := c.cc.Invoke(ctx, MessageRouter_JoinSession_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) MarkPartyReady(ctx context.Context, in *MarkPartyReadyRequest, opts ...grpc.CallOption) (*MarkPartyReadyResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(MarkPartyReadyResponse) + err := c.cc.Invoke(ctx, MessageRouter_MarkPartyReady_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) ReportCompletion(ctx context.Context, in *ReportCompletionRequest, opts ...grpc.CallOption) (*ReportCompletionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReportCompletionResponse) + err := c.cc.Invoke(ctx, MessageRouter_ReportCompletion_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) GetSessionStatus(ctx context.Context, in *GetSessionStatusRequest, opts ...grpc.CallOption) (*GetSessionStatusResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetSessionStatusResponse) + err := c.cc.Invoke(ctx, MessageRouter_GetSessionStatus_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *messageRouterClient) SubmitDelegateShare(ctx context.Context, in *SubmitDelegateShareRequest, opts ...grpc.CallOption) (*SubmitDelegateShareResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SubmitDelegateShareResponse) + err := c.cc.Invoke(ctx, MessageRouter_SubmitDelegateShare_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MessageRouterServer is the server API for MessageRouter service. +// All implementations must embed UnimplementedMessageRouterServer +// for forward compatibility. +// +// MessageRouter service handles MPC message routing +// This is the ONLY service that server-parties need to connect to. +// All session operations are proxied through Message Router to Session Coordinator. +type MessageRouterServer interface { + // RouteMessage routes a message from one party to others + RouteMessage(context.Context, *RouteMessageRequest) (*RouteMessageResponse, error) + // SubscribeMessages subscribes to messages for a party (streaming) + SubscribeMessages(*SubscribeMessagesRequest, grpc.ServerStreamingServer[MPCMessage]) error + // GetPendingMessages retrieves pending messages (polling alternative) + GetPendingMessages(context.Context, *GetPendingMessagesRequest) (*GetPendingMessagesResponse, error) + // AcknowledgeMessage acknowledges receipt of a message + // Must be called after processing a message to confirm delivery + AcknowledgeMessage(context.Context, *AcknowledgeMessageRequest) (*AcknowledgeMessageResponse, error) + // GetMessageStatus gets the delivery status of a message + GetMessageStatus(context.Context, *GetMessageStatusRequest) (*GetMessageStatusResponse, error) + // RegisterParty registers a party with the message router (party actively connects) + RegisterParty(context.Context, *RegisterPartyRequest) (*RegisterPartyResponse, error) + // Heartbeat sends a heartbeat to keep the party alive + Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error) + // SubscribeSessionEvents subscribes to session lifecycle events (session start, etc.) + SubscribeSessionEvents(*SubscribeSessionEventsRequest, grpc.ServerStreamingServer[SessionEvent]) error + // PublishSessionEvent publishes a session event (called by Session Coordinator) + PublishSessionEvent(context.Context, *PublishSessionEventRequest) (*PublishSessionEventResponse, error) + // GetRegisteredParties returns all registered parties (for Session Coordinator party discovery) + GetRegisteredParties(context.Context, *GetRegisteredPartiesRequest) (*GetRegisteredPartiesResponse, error) + // JoinSession joins a session (proxied to Session Coordinator) + JoinSession(context.Context, *JoinSessionRequest) (*JoinSessionResponse, error) + // MarkPartyReady marks a party as ready (proxied to Session Coordinator) + MarkPartyReady(context.Context, *MarkPartyReadyRequest) (*MarkPartyReadyResponse, error) + // ReportCompletion reports completion (proxied to Session Coordinator) + ReportCompletion(context.Context, *ReportCompletionRequest) (*ReportCompletionResponse, error) + // GetSessionStatus gets session status (proxied to Session Coordinator) + GetSessionStatus(context.Context, *GetSessionStatusRequest) (*GetSessionStatusResponse, error) + // SubmitDelegateShare submits user's share from delegate party (proxied to Session Coordinator) + SubmitDelegateShare(context.Context, *SubmitDelegateShareRequest) (*SubmitDelegateShareResponse, error) + mustEmbedUnimplementedMessageRouterServer() +} + +// UnimplementedMessageRouterServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMessageRouterServer struct{} + +func (UnimplementedMessageRouterServer) RouteMessage(context.Context, *RouteMessageRequest) (*RouteMessageResponse, error) { + return nil, status.Error(codes.Unimplemented, "method RouteMessage not implemented") +} +func (UnimplementedMessageRouterServer) SubscribeMessages(*SubscribeMessagesRequest, grpc.ServerStreamingServer[MPCMessage]) error { + return status.Error(codes.Unimplemented, "method SubscribeMessages not implemented") +} +func (UnimplementedMessageRouterServer) GetPendingMessages(context.Context, *GetPendingMessagesRequest) (*GetPendingMessagesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetPendingMessages not implemented") +} +func (UnimplementedMessageRouterServer) AcknowledgeMessage(context.Context, *AcknowledgeMessageRequest) (*AcknowledgeMessageResponse, error) { + return nil, status.Error(codes.Unimplemented, "method AcknowledgeMessage not implemented") +} +func (UnimplementedMessageRouterServer) GetMessageStatus(context.Context, *GetMessageStatusRequest) (*GetMessageStatusResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetMessageStatus not implemented") +} +func (UnimplementedMessageRouterServer) RegisterParty(context.Context, *RegisterPartyRequest) (*RegisterPartyResponse, error) { + return nil, status.Error(codes.Unimplemented, "method RegisterParty not implemented") +} +func (UnimplementedMessageRouterServer) Heartbeat(context.Context, *HeartbeatRequest) (*HeartbeatResponse, error) { + return nil, status.Error(codes.Unimplemented, "method Heartbeat not implemented") +} +func (UnimplementedMessageRouterServer) SubscribeSessionEvents(*SubscribeSessionEventsRequest, grpc.ServerStreamingServer[SessionEvent]) error { + return status.Error(codes.Unimplemented, "method SubscribeSessionEvents not implemented") +} +func (UnimplementedMessageRouterServer) PublishSessionEvent(context.Context, *PublishSessionEventRequest) (*PublishSessionEventResponse, error) { + return nil, status.Error(codes.Unimplemented, "method PublishSessionEvent not implemented") +} +func (UnimplementedMessageRouterServer) GetRegisteredParties(context.Context, *GetRegisteredPartiesRequest) (*GetRegisteredPartiesResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetRegisteredParties not implemented") +} +func (UnimplementedMessageRouterServer) JoinSession(context.Context, *JoinSessionRequest) (*JoinSessionResponse, error) { + return nil, status.Error(codes.Unimplemented, "method JoinSession not implemented") +} +func (UnimplementedMessageRouterServer) MarkPartyReady(context.Context, *MarkPartyReadyRequest) (*MarkPartyReadyResponse, error) { + return nil, status.Error(codes.Unimplemented, "method MarkPartyReady not implemented") +} +func (UnimplementedMessageRouterServer) ReportCompletion(context.Context, *ReportCompletionRequest) (*ReportCompletionResponse, error) { + return nil, status.Error(codes.Unimplemented, "method ReportCompletion not implemented") +} +func (UnimplementedMessageRouterServer) GetSessionStatus(context.Context, *GetSessionStatusRequest) (*GetSessionStatusResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetSessionStatus not implemented") +} +func (UnimplementedMessageRouterServer) SubmitDelegateShare(context.Context, *SubmitDelegateShareRequest) (*SubmitDelegateShareResponse, error) { + return nil, status.Error(codes.Unimplemented, "method SubmitDelegateShare not implemented") +} +func (UnimplementedMessageRouterServer) mustEmbedUnimplementedMessageRouterServer() {} +func (UnimplementedMessageRouterServer) testEmbeddedByValue() {} + +// UnsafeMessageRouterServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MessageRouterServer will +// result in compilation errors. +type UnsafeMessageRouterServer interface { + mustEmbedUnimplementedMessageRouterServer() +} + +func RegisterMessageRouterServer(s grpc.ServiceRegistrar, srv MessageRouterServer) { + // If the following call panics, it indicates UnimplementedMessageRouterServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MessageRouter_ServiceDesc, srv) +} + +func _MessageRouter_RouteMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RouteMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).RouteMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_RouteMessage_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).RouteMessage(ctx, req.(*RouteMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_SubscribeMessages_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SubscribeMessagesRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MessageRouterServer).SubscribeMessages(m, &grpc.GenericServerStream[SubscribeMessagesRequest, MPCMessage]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MessageRouter_SubscribeMessagesServer = grpc.ServerStreamingServer[MPCMessage] + +func _MessageRouter_GetPendingMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetPendingMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).GetPendingMessages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_GetPendingMessages_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).GetPendingMessages(ctx, req.(*GetPendingMessagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_AcknowledgeMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AcknowledgeMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).AcknowledgeMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_AcknowledgeMessage_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).AcknowledgeMessage(ctx, req.(*AcknowledgeMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_GetMessageStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetMessageStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).GetMessageStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_GetMessageStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).GetMessageStatus(ctx, req.(*GetMessageStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_RegisterParty_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RegisterPartyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).RegisterParty(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_RegisterParty_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).RegisterParty(ctx, req.(*RegisterPartyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_Heartbeat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(HeartbeatRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).Heartbeat(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_Heartbeat_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).Heartbeat(ctx, req.(*HeartbeatRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_SubscribeSessionEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(SubscribeSessionEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(MessageRouterServer).SubscribeSessionEvents(m, &grpc.GenericServerStream[SubscribeSessionEventsRequest, SessionEvent]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type MessageRouter_SubscribeSessionEventsServer = grpc.ServerStreamingServer[SessionEvent] + +func _MessageRouter_PublishSessionEvent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PublishSessionEventRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).PublishSessionEvent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_PublishSessionEvent_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).PublishSessionEvent(ctx, req.(*PublishSessionEventRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_GetRegisteredParties_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRegisteredPartiesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).GetRegisteredParties(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_GetRegisteredParties_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).GetRegisteredParties(ctx, req.(*GetRegisteredPartiesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_JoinSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(JoinSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).JoinSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_JoinSession_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).JoinSession(ctx, req.(*JoinSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_MarkPartyReady_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MarkPartyReadyRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).MarkPartyReady(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_MarkPartyReady_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).MarkPartyReady(ctx, req.(*MarkPartyReadyRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_ReportCompletion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReportCompletionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).ReportCompletion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_ReportCompletion_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).ReportCompletion(ctx, req.(*ReportCompletionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_GetSessionStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSessionStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).GetSessionStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_GetSessionStatus_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).GetSessionStatus(ctx, req.(*GetSessionStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _MessageRouter_SubmitDelegateShare_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SubmitDelegateShareRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRouterServer).SubmitDelegateShare(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRouter_SubmitDelegateShare_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRouterServer).SubmitDelegateShare(ctx, req.(*SubmitDelegateShareRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MessageRouter_ServiceDesc is the grpc.ServiceDesc for MessageRouter service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MessageRouter_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "mpc.router.v1.MessageRouter", + HandlerType: (*MessageRouterServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "RouteMessage", + Handler: _MessageRouter_RouteMessage_Handler, + }, + { + MethodName: "GetPendingMessages", + Handler: _MessageRouter_GetPendingMessages_Handler, + }, + { + MethodName: "AcknowledgeMessage", + Handler: _MessageRouter_AcknowledgeMessage_Handler, + }, + { + MethodName: "GetMessageStatus", + Handler: _MessageRouter_GetMessageStatus_Handler, + }, + { + MethodName: "RegisterParty", + Handler: _MessageRouter_RegisterParty_Handler, + }, + { + MethodName: "Heartbeat", + Handler: _MessageRouter_Heartbeat_Handler, + }, + { + MethodName: "PublishSessionEvent", + Handler: _MessageRouter_PublishSessionEvent_Handler, + }, + { + MethodName: "GetRegisteredParties", + Handler: _MessageRouter_GetRegisteredParties_Handler, + }, + { + MethodName: "JoinSession", + Handler: _MessageRouter_JoinSession_Handler, + }, + { + MethodName: "MarkPartyReady", + Handler: _MessageRouter_MarkPartyReady_Handler, + }, + { + MethodName: "ReportCompletion", + Handler: _MessageRouter_ReportCompletion_Handler, + }, + { + MethodName: "GetSessionStatus", + Handler: _MessageRouter_GetSessionStatus_Handler, + }, + { + MethodName: "SubmitDelegateShare", + Handler: _MessageRouter_SubmitDelegateShare_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "SubscribeMessages", + Handler: _MessageRouter_SubscribeMessages_Handler, + ServerStreams: true, + }, + { + StreamName: "SubscribeSessionEvents", + Handler: _MessageRouter_SubscribeSessionEvents_Handler, + ServerStreams: true, + }, + }, + Metadata: "api/proto/message_router.proto", +} diff --git a/backend/mpc-system/api/proto/session_coordinator.pb.go b/backend/mpc-system/api/proto/session_coordinator.pb.go deleted file mode 100644 index 86f1a184..00000000 --- a/backend/mpc-system/api/proto/session_coordinator.pb.go +++ /dev/null @@ -1,1760 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.10 -// protoc v6.33.1 -// source: api/proto/session_coordinator.proto - -package coordinator - -import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// CreateSessionRequest creates a new MPC session -type CreateSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionType string `protobuf:"bytes,1,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // "keygen" or "sign" - ThresholdN int32 `protobuf:"varint,2,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` // Total number of parties - ThresholdT int32 `protobuf:"varint,3,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` // Minimum required parties - Participants []*ParticipantInfo `protobuf:"bytes,4,rep,name=participants,proto3" json:"participants,omitempty"` // Optional: if empty, coordinator selects automatically - MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` // Required for sign sessions - ExpiresInSeconds int64 `protobuf:"varint,6,opt,name=expires_in_seconds,json=expiresInSeconds,proto3" json:"expires_in_seconds,omitempty"` // Session expiration time - PartyComposition *PartyComposition `protobuf:"bytes,7,opt,name=party_composition,json=partyComposition,proto3" json:"party_composition,omitempty"` // Optional: party composition requirements for auto-selection - // For sign sessions with delegate party: user must provide their encrypted share - DelegateUserShare *DelegateUserShare `protobuf:"bytes,8,opt,name=delegate_user_share,json=delegateUserShare,proto3" json:"delegate_user_share,omitempty"` - // For sign sessions: which keygen session's shares to use - KeygenSessionId string `protobuf:"bytes,9,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateSessionRequest) Reset() { - *x = CreateSessionRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateSessionRequest) ProtoMessage() {} - -func (x *CreateSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[0] - 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 CreateSessionRequest.ProtoReflect.Descriptor instead. -func (*CreateSessionRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{0} -} - -func (x *CreateSessionRequest) GetSessionType() string { - if x != nil { - return x.SessionType - } - return "" -} - -func (x *CreateSessionRequest) GetThresholdN() int32 { - if x != nil { - return x.ThresholdN - } - return 0 -} - -func (x *CreateSessionRequest) GetThresholdT() int32 { - if x != nil { - return x.ThresholdT - } - return 0 -} - -func (x *CreateSessionRequest) GetParticipants() []*ParticipantInfo { - if x != nil { - return x.Participants - } - return nil -} - -func (x *CreateSessionRequest) GetMessageHash() []byte { - if x != nil { - return x.MessageHash - } - return nil -} - -func (x *CreateSessionRequest) GetExpiresInSeconds() int64 { - if x != nil { - return x.ExpiresInSeconds - } - return 0 -} - -func (x *CreateSessionRequest) GetPartyComposition() *PartyComposition { - if x != nil { - return x.PartyComposition - } - return nil -} - -func (x *CreateSessionRequest) GetDelegateUserShare() *DelegateUserShare { - if x != nil { - return x.DelegateUserShare - } - return nil -} - -func (x *CreateSessionRequest) GetKeygenSessionId() string { - if x != nil { - return x.KeygenSessionId - } - return "" -} - -// DelegateUserShare contains user's share for delegate party to use in signing -type DelegateUserShare struct { - state protoimpl.MessageState `protogen:"open.v1"` - DelegatePartyId string `protobuf:"bytes,1,opt,name=delegate_party_id,json=delegatePartyId,proto3" json:"delegate_party_id,omitempty"` // The delegate party that will use this share - EncryptedShare []byte `protobuf:"bytes,2,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // User's encrypted share (same as received from keygen) - PartyIndex int32 `protobuf:"varint,3,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // Party index for this share - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DelegateUserShare) Reset() { - *x = DelegateUserShare{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DelegateUserShare) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DelegateUserShare) ProtoMessage() {} - -func (x *DelegateUserShare) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[1] - 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 DelegateUserShare.ProtoReflect.Descriptor instead. -func (*DelegateUserShare) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{1} -} - -func (x *DelegateUserShare) GetDelegatePartyId() string { - if x != nil { - return x.DelegatePartyId - } - return "" -} - -func (x *DelegateUserShare) GetEncryptedShare() []byte { - if x != nil { - return x.EncryptedShare - } - return nil -} - -func (x *DelegateUserShare) GetPartyIndex() int32 { - if x != nil { - return x.PartyIndex - } - return 0 -} - -// PartyComposition specifies requirements for automatic party selection -type PartyComposition struct { - state protoimpl.MessageState `protogen:"open.v1"` - PersistentCount int32 `protobuf:"varint,1,opt,name=persistent_count,json=persistentCount,proto3" json:"persistent_count,omitempty"` // Number of persistent parties (store shares in DB) - DelegateCount int32 `protobuf:"varint,2,opt,name=delegate_count,json=delegateCount,proto3" json:"delegate_count,omitempty"` // Number of delegate parties (return shares to user) - TemporaryCount int32 `protobuf:"varint,3,opt,name=temporary_count,json=temporaryCount,proto3" json:"temporary_count,omitempty"` // Number of temporary parties - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PartyComposition) Reset() { - *x = PartyComposition{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PartyComposition) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PartyComposition) ProtoMessage() {} - -func (x *PartyComposition) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[2] - 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 PartyComposition.ProtoReflect.Descriptor instead. -func (*PartyComposition) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{2} -} - -func (x *PartyComposition) GetPersistentCount() int32 { - if x != nil { - return x.PersistentCount - } - return 0 -} - -func (x *PartyComposition) GetDelegateCount() int32 { - if x != nil { - return x.DelegateCount - } - return 0 -} - -func (x *PartyComposition) GetTemporaryCount() int32 { - if x != nil { - return x.TemporaryCount - } - return 0 -} - -// ParticipantInfo contains information about a participant -type ParticipantInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - DeviceInfo *DeviceInfo `protobuf:"bytes,2,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ParticipantInfo) Reset() { - *x = ParticipantInfo{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ParticipantInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ParticipantInfo) ProtoMessage() {} - -func (x *ParticipantInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[3] - 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 ParticipantInfo.ProtoReflect.Descriptor instead. -func (*ParticipantInfo) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{3} -} - -func (x *ParticipantInfo) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ParticipantInfo) GetDeviceInfo() *DeviceInfo { - if x != nil { - return x.DeviceInfo - } - return nil -} - -// DeviceInfo contains device information -type DeviceInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - DeviceType string `protobuf:"bytes,1,opt,name=device_type,json=deviceType,proto3" json:"device_type,omitempty"` // android, ios, pc, server, recovery - DeviceId string `protobuf:"bytes,2,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"` - Platform string `protobuf:"bytes,3,opt,name=platform,proto3" json:"platform,omitempty"` - AppVersion string `protobuf:"bytes,4,opt,name=app_version,json=appVersion,proto3" json:"app_version,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeviceInfo) Reset() { - *x = DeviceInfo{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeviceInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceInfo) ProtoMessage() {} - -func (x *DeviceInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[4] - 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 DeviceInfo.ProtoReflect.Descriptor instead. -func (*DeviceInfo) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{4} -} - -func (x *DeviceInfo) GetDeviceType() string { - if x != nil { - return x.DeviceType - } - return "" -} - -func (x *DeviceInfo) GetDeviceId() string { - if x != nil { - return x.DeviceId - } - return "" -} - -func (x *DeviceInfo) GetPlatform() string { - if x != nil { - return x.Platform - } - return "" -} - -func (x *DeviceInfo) GetAppVersion() string { - if x != nil { - return x.AppVersion - } - return "" -} - -// CreateSessionResponse contains the created session info -type CreateSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - JoinTokens map[string]string `protobuf:"bytes,2,rep,name=join_tokens,json=joinTokens,proto3" json:"join_tokens,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // party_id -> join_token - ExpiresAt int64 `protobuf:"varint,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // Unix timestamp milliseconds - SelectedParties []string `protobuf:"bytes,4,rep,name=selected_parties,json=selectedParties,proto3" json:"selected_parties,omitempty"` // List of selected party IDs - DelegatePartyId string `protobuf:"bytes,5,opt,name=delegate_party_id,json=delegatePartyId,proto3" json:"delegate_party_id,omitempty"` // The delegate party ID (if any) - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CreateSessionResponse) Reset() { - *x = CreateSessionResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CreateSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CreateSessionResponse) ProtoMessage() {} - -func (x *CreateSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[5] - 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 CreateSessionResponse.ProtoReflect.Descriptor instead. -func (*CreateSessionResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{5} -} - -func (x *CreateSessionResponse) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *CreateSessionResponse) GetJoinTokens() map[string]string { - if x != nil { - return x.JoinTokens - } - return nil -} - -func (x *CreateSessionResponse) GetExpiresAt() int64 { - if x != nil { - return x.ExpiresAt - } - return 0 -} - -func (x *CreateSessionResponse) GetSelectedParties() []string { - if x != nil { - return x.SelectedParties - } - return nil -} - -func (x *CreateSessionResponse) GetDelegatePartyId() string { - if x != nil { - return x.DelegatePartyId - } - return "" -} - -// JoinSessionRequest allows a participant to join a session -type JoinSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - JoinToken string `protobuf:"bytes,3,opt,name=join_token,json=joinToken,proto3" json:"join_token,omitempty"` - DeviceInfo *DeviceInfo `protobuf:"bytes,4,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *JoinSessionRequest) Reset() { - *x = JoinSessionRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *JoinSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*JoinSessionRequest) ProtoMessage() {} - -func (x *JoinSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[6] - 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 JoinSessionRequest.ProtoReflect.Descriptor instead. -func (*JoinSessionRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{6} -} - -func (x *JoinSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *JoinSessionRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *JoinSessionRequest) GetJoinToken() string { - if x != nil { - return x.JoinToken - } - return "" -} - -func (x *JoinSessionRequest) GetDeviceInfo() *DeviceInfo { - if x != nil { - return x.DeviceInfo - } - return nil -} - -// JoinSessionResponse contains session information for the joining party -type JoinSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - SessionInfo *SessionInfo `protobuf:"bytes,2,opt,name=session_info,json=sessionInfo,proto3" json:"session_info,omitempty"` - OtherParties []*PartyInfo `protobuf:"bytes,3,rep,name=other_parties,json=otherParties,proto3" json:"other_parties,omitempty"` - PartyIndex int32 `protobuf:"varint,4,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // This party's assigned index - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *JoinSessionResponse) Reset() { - *x = JoinSessionResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *JoinSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*JoinSessionResponse) ProtoMessage() {} - -func (x *JoinSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_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 JoinSessionResponse.ProtoReflect.Descriptor instead. -func (*JoinSessionResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{7} -} - -func (x *JoinSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *JoinSessionResponse) GetSessionInfo() *SessionInfo { - if x != nil { - return x.SessionInfo - } - return nil -} - -func (x *JoinSessionResponse) GetOtherParties() []*PartyInfo { - if x != nil { - return x.OtherParties - } - return nil -} - -func (x *JoinSessionResponse) GetPartyIndex() int32 { - if x != nil { - return x.PartyIndex - } - return 0 -} - -// SessionInfo contains session information -type SessionInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SessionType string `protobuf:"bytes,2,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` - ThresholdN int32 `protobuf:"varint,3,opt,name=threshold_n,json=thresholdN,proto3" json:"threshold_n,omitempty"` - ThresholdT int32 `protobuf:"varint,4,opt,name=threshold_t,json=thresholdT,proto3" json:"threshold_t,omitempty"` - MessageHash []byte `protobuf:"bytes,5,opt,name=message_hash,json=messageHash,proto3" json:"message_hash,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - // For sign sessions: which keygen session's shares to use - KeygenSessionId string `protobuf:"bytes,7,opt,name=keygen_session_id,json=keygenSessionId,proto3" json:"keygen_session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SessionInfo) Reset() { - *x = SessionInfo{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SessionInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SessionInfo) ProtoMessage() {} - -func (x *SessionInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_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 SessionInfo.ProtoReflect.Descriptor instead. -func (*SessionInfo) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{8} -} - -func (x *SessionInfo) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SessionInfo) GetSessionType() string { - if x != nil { - return x.SessionType - } - return "" -} - -func (x *SessionInfo) GetThresholdN() int32 { - if x != nil { - return x.ThresholdN - } - return 0 -} - -func (x *SessionInfo) GetThresholdT() int32 { - if x != nil { - return x.ThresholdT - } - return 0 -} - -func (x *SessionInfo) GetMessageHash() []byte { - if x != nil { - return x.MessageHash - } - return nil -} - -func (x *SessionInfo) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *SessionInfo) GetKeygenSessionId() string { - if x != nil { - return x.KeygenSessionId - } - return "" -} - -// PartyInfo contains party information -type PartyInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - PartyId string `protobuf:"bytes,1,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - PartyIndex int32 `protobuf:"varint,2,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` - DeviceInfo *DeviceInfo `protobuf:"bytes,3,opt,name=device_info,json=deviceInfo,proto3" json:"device_info,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *PartyInfo) Reset() { - *x = PartyInfo{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *PartyInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PartyInfo) ProtoMessage() {} - -func (x *PartyInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_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 PartyInfo.ProtoReflect.Descriptor instead. -func (*PartyInfo) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{9} -} - -func (x *PartyInfo) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *PartyInfo) GetPartyIndex() int32 { - if x != nil { - return x.PartyIndex - } - return 0 -} - -func (x *PartyInfo) GetDeviceInfo() *DeviceInfo { - if x != nil { - return x.DeviceInfo - } - return nil -} - -// GetSessionStatusRequest queries session status -type GetSessionStatusRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionStatusRequest) Reset() { - *x = GetSessionStatusRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionStatusRequest) ProtoMessage() {} - -func (x *GetSessionStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[10] - 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 GetSessionStatusRequest.ProtoReflect.Descriptor instead. -func (*GetSessionStatusRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{10} -} - -func (x *GetSessionStatusRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -// GetSessionStatusResponse contains session status -type GetSessionStatusResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - CompletedParties int32 `protobuf:"varint,2,opt,name=completed_parties,json=completedParties,proto3" json:"completed_parties,omitempty"` - TotalParties int32 `protobuf:"varint,3,opt,name=total_parties,json=totalParties,proto3" json:"total_parties,omitempty"` - SessionType string `protobuf:"bytes,4,opt,name=session_type,json=sessionType,proto3" json:"session_type,omitempty"` // "keygen" or "sign" - PublicKey []byte `protobuf:"bytes,5,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // For completed keygen - Signature []byte `protobuf:"bytes,6,opt,name=signature,proto3" json:"signature,omitempty"` // For completed sign - // has_delegate indicates whether this keygen session has a delegate party - // Only meaningful for keygen sessions. Always false for sign sessions. - HasDelegate bool `protobuf:"varint,7,opt,name=has_delegate,json=hasDelegate,proto3" json:"has_delegate,omitempty"` - // Delegate share info (returned when keygen session completed and delegate party submitted share) - // Only populated if session_type="keygen" AND has_delegate=true AND session is completed - DelegateShare *DelegateShareInfo `protobuf:"bytes,8,opt,name=delegate_share,json=delegateShare,proto3" json:"delegate_share,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetSessionStatusResponse) Reset() { - *x = GetSessionStatusResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetSessionStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetSessionStatusResponse) ProtoMessage() {} - -func (x *GetSessionStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[11] - 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 GetSessionStatusResponse.ProtoReflect.Descriptor instead. -func (*GetSessionStatusResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{11} -} - -func (x *GetSessionStatusResponse) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -func (x *GetSessionStatusResponse) GetCompletedParties() int32 { - if x != nil { - return x.CompletedParties - } - return 0 -} - -func (x *GetSessionStatusResponse) GetTotalParties() int32 { - if x != nil { - return x.TotalParties - } - return 0 -} - -func (x *GetSessionStatusResponse) GetSessionType() string { - if x != nil { - return x.SessionType - } - return "" -} - -func (x *GetSessionStatusResponse) GetPublicKey() []byte { - if x != nil { - return x.PublicKey - } - return nil -} - -func (x *GetSessionStatusResponse) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -func (x *GetSessionStatusResponse) GetHasDelegate() bool { - if x != nil { - return x.HasDelegate - } - return false -} - -func (x *GetSessionStatusResponse) GetDelegateShare() *DelegateShareInfo { - if x != nil { - return x.DelegateShare - } - return nil -} - -// DelegateShareInfo contains the delegate party's share for user -type DelegateShareInfo struct { - state protoimpl.MessageState `protogen:"open.v1"` - EncryptedShare []byte `protobuf:"bytes,1,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // Encrypted share for user - PartyIndex int32 `protobuf:"varint,2,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // Party's index in the session - PartyId string `protobuf:"bytes,3,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` // Delegate party ID - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DelegateShareInfo) Reset() { - *x = DelegateShareInfo{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DelegateShareInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DelegateShareInfo) ProtoMessage() {} - -func (x *DelegateShareInfo) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[12] - 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 DelegateShareInfo.ProtoReflect.Descriptor instead. -func (*DelegateShareInfo) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{12} -} - -func (x *DelegateShareInfo) GetEncryptedShare() []byte { - if x != nil { - return x.EncryptedShare - } - return nil -} - -func (x *DelegateShareInfo) GetPartyIndex() int32 { - if x != nil { - return x.PartyIndex - } - return 0 -} - -func (x *DelegateShareInfo) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -// ReportCompletionRequest reports that a participant has completed -type ReportCompletionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - PublicKey []byte `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // For keygen completion - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty"` // For sign completion - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReportCompletionRequest) Reset() { - *x = ReportCompletionRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReportCompletionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportCompletionRequest) ProtoMessage() {} - -func (x *ReportCompletionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[13] - 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 ReportCompletionRequest.ProtoReflect.Descriptor instead. -func (*ReportCompletionRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{13} -} - -func (x *ReportCompletionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *ReportCompletionRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *ReportCompletionRequest) GetPublicKey() []byte { - if x != nil { - return x.PublicKey - } - return nil -} - -func (x *ReportCompletionRequest) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -// ReportCompletionResponse contains the result of completion report -type ReportCompletionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - AllCompleted bool `protobuf:"varint,2,opt,name=all_completed,json=allCompleted,proto3" json:"all_completed,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *ReportCompletionResponse) Reset() { - *x = ReportCompletionResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *ReportCompletionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReportCompletionResponse) ProtoMessage() {} - -func (x *ReportCompletionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[14] - 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 ReportCompletionResponse.ProtoReflect.Descriptor instead. -func (*ReportCompletionResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{14} -} - -func (x *ReportCompletionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *ReportCompletionResponse) GetAllCompleted() bool { - if x != nil { - return x.AllCompleted - } - return false -} - -// CloseSessionRequest closes a session -type CloseSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CloseSessionRequest) Reset() { - *x = CloseSessionRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CloseSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CloseSessionRequest) ProtoMessage() {} - -func (x *CloseSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[15] - 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 CloseSessionRequest.ProtoReflect.Descriptor instead. -func (*CloseSessionRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{15} -} - -func (x *CloseSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -// CloseSessionResponse contains the result of session closure -type CloseSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *CloseSessionResponse) Reset() { - *x = CloseSessionResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *CloseSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CloseSessionResponse) ProtoMessage() {} - -func (x *CloseSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[16] - 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 CloseSessionResponse.ProtoReflect.Descriptor instead. -func (*CloseSessionResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{16} -} - -func (x *CloseSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -// MarkPartyReadyRequest marks a party as ready to start the protocol -type MarkPartyReadyRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MarkPartyReadyRequest) Reset() { - *x = MarkPartyReadyRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MarkPartyReadyRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MarkPartyReadyRequest) ProtoMessage() {} - -func (x *MarkPartyReadyRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[17] - 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 MarkPartyReadyRequest.ProtoReflect.Descriptor instead. -func (*MarkPartyReadyRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{17} -} - -func (x *MarkPartyReadyRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *MarkPartyReadyRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -// MarkPartyReadyResponse contains the result of marking party ready -type MarkPartyReadyResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - AllReady bool `protobuf:"varint,2,opt,name=all_ready,json=allReady,proto3" json:"all_ready,omitempty"` // True if all parties are ready - ReadyCount int32 `protobuf:"varint,3,opt,name=ready_count,json=readyCount,proto3" json:"ready_count,omitempty"` - TotalParties int32 `protobuf:"varint,4,opt,name=total_parties,json=totalParties,proto3" json:"total_parties,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *MarkPartyReadyResponse) Reset() { - *x = MarkPartyReadyResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *MarkPartyReadyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MarkPartyReadyResponse) ProtoMessage() {} - -func (x *MarkPartyReadyResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[18] - 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 MarkPartyReadyResponse.ProtoReflect.Descriptor instead. -func (*MarkPartyReadyResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{18} -} - -func (x *MarkPartyReadyResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *MarkPartyReadyResponse) GetAllReady() bool { - if x != nil { - return x.AllReady - } - return false -} - -func (x *MarkPartyReadyResponse) GetReadyCount() int32 { - if x != nil { - return x.ReadyCount - } - return 0 -} - -func (x *MarkPartyReadyResponse) GetTotalParties() int32 { - if x != nil { - return x.TotalParties - } - return 0 -} - -// StartSessionRequest starts the MPC protocol execution -type StartSessionRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartSessionRequest) Reset() { - *x = StartSessionRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartSessionRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartSessionRequest) ProtoMessage() {} - -func (x *StartSessionRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[19] - 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 StartSessionRequest.ProtoReflect.Descriptor instead. -func (*StartSessionRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{19} -} - -func (x *StartSessionRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -// StartSessionResponse contains the result of starting the session -type StartSessionResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // New session status - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StartSessionResponse) Reset() { - *x = StartSessionResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StartSessionResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StartSessionResponse) ProtoMessage() {} - -func (x *StartSessionResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[20] - 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 StartSessionResponse.ProtoReflect.Descriptor instead. -func (*StartSessionResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{20} -} - -func (x *StartSessionResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -func (x *StartSessionResponse) GetStatus() string { - if x != nil { - return x.Status - } - return "" -} - -// SubmitDelegateShareRequest submits user's share from delegate party -type SubmitDelegateShareRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - PartyId string `protobuf:"bytes,2,opt,name=party_id,json=partyId,proto3" json:"party_id,omitempty"` - EncryptedShare []byte `protobuf:"bytes,3,opt,name=encrypted_share,json=encryptedShare,proto3" json:"encrypted_share,omitempty"` // Encrypted share for user - PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` // Public key from keygen - PartyIndex int32 `protobuf:"varint,5,opt,name=party_index,json=partyIndex,proto3" json:"party_index,omitempty"` // Party's index in the session - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubmitDelegateShareRequest) Reset() { - *x = SubmitDelegateShareRequest{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubmitDelegateShareRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubmitDelegateShareRequest) ProtoMessage() {} - -func (x *SubmitDelegateShareRequest) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[21] - 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 SubmitDelegateShareRequest.ProtoReflect.Descriptor instead. -func (*SubmitDelegateShareRequest) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{21} -} - -func (x *SubmitDelegateShareRequest) GetSessionId() string { - if x != nil { - return x.SessionId - } - return "" -} - -func (x *SubmitDelegateShareRequest) GetPartyId() string { - if x != nil { - return x.PartyId - } - return "" -} - -func (x *SubmitDelegateShareRequest) GetEncryptedShare() []byte { - if x != nil { - return x.EncryptedShare - } - return nil -} - -func (x *SubmitDelegateShareRequest) GetPublicKey() []byte { - if x != nil { - return x.PublicKey - } - return nil -} - -func (x *SubmitDelegateShareRequest) GetPartyIndex() int32 { - if x != nil { - return x.PartyIndex - } - return 0 -} - -// SubmitDelegateShareResponse contains result of share submission -type SubmitDelegateShareResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *SubmitDelegateShareResponse) Reset() { - *x = SubmitDelegateShareResponse{} - mi := &file_api_proto_session_coordinator_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *SubmitDelegateShareResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubmitDelegateShareResponse) ProtoMessage() {} - -func (x *SubmitDelegateShareResponse) ProtoReflect() protoreflect.Message { - mi := &file_api_proto_session_coordinator_proto_msgTypes[22] - 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 SubmitDelegateShareResponse.ProtoReflect.Descriptor instead. -func (*SubmitDelegateShareResponse) Descriptor() ([]byte, []int) { - return file_api_proto_session_coordinator_proto_rawDescGZIP(), []int{22} -} - -func (x *SubmitDelegateShareResponse) GetSuccess() bool { - if x != nil { - return x.Success - } - return false -} - -var File_api_proto_session_coordinator_proto protoreflect.FileDescriptor - -const file_api_proto_session_coordinator_proto_rawDesc = "" + - "\n" + - "#api/proto/session_coordinator.proto\x12\x12mpc.coordinator.v1\"\xeb\x03\n" + - "\x14CreateSessionRequest\x12!\n" + - "\fsession_type\x18\x01 \x01(\tR\vsessionType\x12\x1f\n" + - "\vthreshold_n\x18\x02 \x01(\x05R\n" + - "thresholdN\x12\x1f\n" + - "\vthreshold_t\x18\x03 \x01(\x05R\n" + - "thresholdT\x12G\n" + - "\fparticipants\x18\x04 \x03(\v2#.mpc.coordinator.v1.ParticipantInfoR\fparticipants\x12!\n" + - "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12,\n" + - "\x12expires_in_seconds\x18\x06 \x01(\x03R\x10expiresInSeconds\x12Q\n" + - "\x11party_composition\x18\a \x01(\v2$.mpc.coordinator.v1.PartyCompositionR\x10partyComposition\x12U\n" + - "\x13delegate_user_share\x18\b \x01(\v2%.mpc.coordinator.v1.DelegateUserShareR\x11delegateUserShare\x12*\n" + - "\x11keygen_session_id\x18\t \x01(\tR\x0fkeygenSessionId\"\x89\x01\n" + - "\x11DelegateUserShare\x12*\n" + - "\x11delegate_party_id\x18\x01 \x01(\tR\x0fdelegatePartyId\x12'\n" + - "\x0fencrypted_share\x18\x02 \x01(\fR\x0eencryptedShare\x12\x1f\n" + - "\vparty_index\x18\x03 \x01(\x05R\n" + - "partyIndex\"\x8d\x01\n" + - "\x10PartyComposition\x12)\n" + - "\x10persistent_count\x18\x01 \x01(\x05R\x0fpersistentCount\x12%\n" + - "\x0edelegate_count\x18\x02 \x01(\x05R\rdelegateCount\x12'\n" + - "\x0ftemporary_count\x18\x03 \x01(\x05R\x0etemporaryCount\"m\n" + - "\x0fParticipantInfo\x12\x19\n" + - "\bparty_id\x18\x01 \x01(\tR\apartyId\x12?\n" + - "\vdevice_info\x18\x02 \x01(\v2\x1e.mpc.coordinator.v1.DeviceInfoR\n" + - "deviceInfo\"\x87\x01\n" + - "\n" + - "DeviceInfo\x12\x1f\n" + - "\vdevice_type\x18\x01 \x01(\tR\n" + - "deviceType\x12\x1b\n" + - "\tdevice_id\x18\x02 \x01(\tR\bdeviceId\x12\x1a\n" + - "\bplatform\x18\x03 \x01(\tR\bplatform\x12\x1f\n" + - "\vapp_version\x18\x04 \x01(\tR\n" + - "appVersion\"\xc7\x02\n" + - "\x15CreateSessionResponse\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12Z\n" + - "\vjoin_tokens\x18\x02 \x03(\v29.mpc.coordinator.v1.CreateSessionResponse.JoinTokensEntryR\n" + - "joinTokens\x12\x1d\n" + - "\n" + - "expires_at\x18\x03 \x01(\x03R\texpiresAt\x12)\n" + - "\x10selected_parties\x18\x04 \x03(\tR\x0fselectedParties\x12*\n" + - "\x11delegate_party_id\x18\x05 \x01(\tR\x0fdelegatePartyId\x1a=\n" + - "\x0fJoinTokensEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xae\x01\n" + - "\x12JoinSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" + - "\n" + - "join_token\x18\x03 \x01(\tR\tjoinToken\x12?\n" + - "\vdevice_info\x18\x04 \x01(\v2\x1e.mpc.coordinator.v1.DeviceInfoR\n" + - "deviceInfo\"\xd8\x01\n" + - "\x13JoinSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12B\n" + - "\fsession_info\x18\x02 \x01(\v2\x1f.mpc.coordinator.v1.SessionInfoR\vsessionInfo\x12B\n" + - "\rother_parties\x18\x03 \x03(\v2\x1d.mpc.coordinator.v1.PartyInfoR\fotherParties\x12\x1f\n" + - "\vparty_index\x18\x04 \x01(\x05R\n" + - "partyIndex\"\xf8\x01\n" + - "\vSessionInfo\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12!\n" + - "\fsession_type\x18\x02 \x01(\tR\vsessionType\x12\x1f\n" + - "\vthreshold_n\x18\x03 \x01(\x05R\n" + - "thresholdN\x12\x1f\n" + - "\vthreshold_t\x18\x04 \x01(\x05R\n" + - "thresholdT\x12!\n" + - "\fmessage_hash\x18\x05 \x01(\fR\vmessageHash\x12\x16\n" + - "\x06status\x18\x06 \x01(\tR\x06status\x12*\n" + - "\x11keygen_session_id\x18\a \x01(\tR\x0fkeygenSessionId\"\x88\x01\n" + - "\tPartyInfo\x12\x19\n" + - "\bparty_id\x18\x01 \x01(\tR\apartyId\x12\x1f\n" + - "\vparty_index\x18\x02 \x01(\x05R\n" + - "partyIndex\x12?\n" + - "\vdevice_info\x18\x03 \x01(\v2\x1e.mpc.coordinator.v1.DeviceInfoR\n" + - "deviceInfo\"8\n" + - "\x17GetSessionStatusRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"\xd5\x02\n" + - "\x18GetSessionStatusResponse\x12\x16\n" + - "\x06status\x18\x01 \x01(\tR\x06status\x12+\n" + - "\x11completed_parties\x18\x02 \x01(\x05R\x10completedParties\x12#\n" + - "\rtotal_parties\x18\x03 \x01(\x05R\ftotalParties\x12!\n" + - "\fsession_type\x18\x04 \x01(\tR\vsessionType\x12\x1d\n" + - "\n" + - "public_key\x18\x05 \x01(\fR\tpublicKey\x12\x1c\n" + - "\tsignature\x18\x06 \x01(\fR\tsignature\x12!\n" + - "\fhas_delegate\x18\a \x01(\bR\vhasDelegate\x12L\n" + - "\x0edelegate_share\x18\b \x01(\v2%.mpc.coordinator.v1.DelegateShareInfoR\rdelegateShare\"x\n" + - "\x11DelegateShareInfo\x12'\n" + - "\x0fencrypted_share\x18\x01 \x01(\fR\x0eencryptedShare\x12\x1f\n" + - "\vparty_index\x18\x02 \x01(\x05R\n" + - "partyIndex\x12\x19\n" + - "\bparty_id\x18\x03 \x01(\tR\apartyId\"\x90\x01\n" + - "\x17ReportCompletionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bparty_id\x18\x02 \x01(\tR\apartyId\x12\x1d\n" + - "\n" + - "public_key\x18\x03 \x01(\fR\tpublicKey\x12\x1c\n" + - "\tsignature\x18\x04 \x01(\fR\tsignature\"Y\n" + - "\x18ReportCompletionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12#\n" + - "\rall_completed\x18\x02 \x01(\bR\fallCompleted\"4\n" + - "\x13CloseSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"0\n" + - "\x14CloseSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\"Q\n" + - "\x15MarkPartyReadyRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bparty_id\x18\x02 \x01(\tR\apartyId\"\x95\x01\n" + - "\x16MarkPartyReadyResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x1b\n" + - "\tall_ready\x18\x02 \x01(\bR\ballReady\x12\x1f\n" + - "\vready_count\x18\x03 \x01(\x05R\n" + - "readyCount\x12#\n" + - "\rtotal_parties\x18\x04 \x01(\x05R\ftotalParties\"4\n" + - "\x13StartSessionRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\"H\n" + - "\x14StartSessionResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess\x12\x16\n" + - "\x06status\x18\x02 \x01(\tR\x06status\"\xbf\x01\n" + - "\x1aSubmitDelegateShareRequest\x12\x1d\n" + - "\n" + - "session_id\x18\x01 \x01(\tR\tsessionId\x12\x19\n" + - "\bparty_id\x18\x02 \x01(\tR\apartyId\x12'\n" + - "\x0fencrypted_share\x18\x03 \x01(\fR\x0eencryptedShare\x12\x1d\n" + - "\n" + - "public_key\x18\x04 \x01(\fR\tpublicKey\x12\x1f\n" + - "\vparty_index\x18\x05 \x01(\x05R\n" + - "partyIndex\"7\n" + - "\x1bSubmitDelegateShareResponse\x12\x18\n" + - "\asuccess\x18\x01 \x01(\bR\asuccess2\xdf\x06\n" + - "\x12SessionCoordinator\x12d\n" + - "\rCreateSession\x12(.mpc.coordinator.v1.CreateSessionRequest\x1a).mpc.coordinator.v1.CreateSessionResponse\x12^\n" + - "\vJoinSession\x12&.mpc.coordinator.v1.JoinSessionRequest\x1a'.mpc.coordinator.v1.JoinSessionResponse\x12m\n" + - "\x10GetSessionStatus\x12+.mpc.coordinator.v1.GetSessionStatusRequest\x1a,.mpc.coordinator.v1.GetSessionStatusResponse\x12g\n" + - "\x0eMarkPartyReady\x12).mpc.coordinator.v1.MarkPartyReadyRequest\x1a*.mpc.coordinator.v1.MarkPartyReadyResponse\x12a\n" + - "\fStartSession\x12'.mpc.coordinator.v1.StartSessionRequest\x1a(.mpc.coordinator.v1.StartSessionResponse\x12m\n" + - "\x10ReportCompletion\x12+.mpc.coordinator.v1.ReportCompletionRequest\x1a,.mpc.coordinator.v1.ReportCompletionResponse\x12a\n" + - "\fCloseSession\x12'.mpc.coordinator.v1.CloseSessionRequest\x1a(.mpc.coordinator.v1.CloseSessionResponse\x12v\n" + - "\x13SubmitDelegateShare\x12..mpc.coordinator.v1.SubmitDelegateShareRequest\x1a/.mpc.coordinator.v1.SubmitDelegateShareResponseBEZCgithub.com/rwadurian/mpc-system/api/grpc/coordinator/v1;coordinatorb\x06proto3" - -var ( - file_api_proto_session_coordinator_proto_rawDescOnce sync.Once - file_api_proto_session_coordinator_proto_rawDescData []byte -) - -func file_api_proto_session_coordinator_proto_rawDescGZIP() []byte { - file_api_proto_session_coordinator_proto_rawDescOnce.Do(func() { - file_api_proto_session_coordinator_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_proto_session_coordinator_proto_rawDesc), len(file_api_proto_session_coordinator_proto_rawDesc))) - }) - return file_api_proto_session_coordinator_proto_rawDescData -} - -var file_api_proto_session_coordinator_proto_msgTypes = make([]protoimpl.MessageInfo, 24) -var file_api_proto_session_coordinator_proto_goTypes = []any{ - (*CreateSessionRequest)(nil), // 0: mpc.coordinator.v1.CreateSessionRequest - (*DelegateUserShare)(nil), // 1: mpc.coordinator.v1.DelegateUserShare - (*PartyComposition)(nil), // 2: mpc.coordinator.v1.PartyComposition - (*ParticipantInfo)(nil), // 3: mpc.coordinator.v1.ParticipantInfo - (*DeviceInfo)(nil), // 4: mpc.coordinator.v1.DeviceInfo - (*CreateSessionResponse)(nil), // 5: mpc.coordinator.v1.CreateSessionResponse - (*JoinSessionRequest)(nil), // 6: mpc.coordinator.v1.JoinSessionRequest - (*JoinSessionResponse)(nil), // 7: mpc.coordinator.v1.JoinSessionResponse - (*SessionInfo)(nil), // 8: mpc.coordinator.v1.SessionInfo - (*PartyInfo)(nil), // 9: mpc.coordinator.v1.PartyInfo - (*GetSessionStatusRequest)(nil), // 10: mpc.coordinator.v1.GetSessionStatusRequest - (*GetSessionStatusResponse)(nil), // 11: mpc.coordinator.v1.GetSessionStatusResponse - (*DelegateShareInfo)(nil), // 12: mpc.coordinator.v1.DelegateShareInfo - (*ReportCompletionRequest)(nil), // 13: mpc.coordinator.v1.ReportCompletionRequest - (*ReportCompletionResponse)(nil), // 14: mpc.coordinator.v1.ReportCompletionResponse - (*CloseSessionRequest)(nil), // 15: mpc.coordinator.v1.CloseSessionRequest - (*CloseSessionResponse)(nil), // 16: mpc.coordinator.v1.CloseSessionResponse - (*MarkPartyReadyRequest)(nil), // 17: mpc.coordinator.v1.MarkPartyReadyRequest - (*MarkPartyReadyResponse)(nil), // 18: mpc.coordinator.v1.MarkPartyReadyResponse - (*StartSessionRequest)(nil), // 19: mpc.coordinator.v1.StartSessionRequest - (*StartSessionResponse)(nil), // 20: mpc.coordinator.v1.StartSessionResponse - (*SubmitDelegateShareRequest)(nil), // 21: mpc.coordinator.v1.SubmitDelegateShareRequest - (*SubmitDelegateShareResponse)(nil), // 22: mpc.coordinator.v1.SubmitDelegateShareResponse - nil, // 23: mpc.coordinator.v1.CreateSessionResponse.JoinTokensEntry -} -var file_api_proto_session_coordinator_proto_depIdxs = []int32{ - 3, // 0: mpc.coordinator.v1.CreateSessionRequest.participants:type_name -> mpc.coordinator.v1.ParticipantInfo - 2, // 1: mpc.coordinator.v1.CreateSessionRequest.party_composition:type_name -> mpc.coordinator.v1.PartyComposition - 1, // 2: mpc.coordinator.v1.CreateSessionRequest.delegate_user_share:type_name -> mpc.coordinator.v1.DelegateUserShare - 4, // 3: mpc.coordinator.v1.ParticipantInfo.device_info:type_name -> mpc.coordinator.v1.DeviceInfo - 23, // 4: mpc.coordinator.v1.CreateSessionResponse.join_tokens:type_name -> mpc.coordinator.v1.CreateSessionResponse.JoinTokensEntry - 4, // 5: mpc.coordinator.v1.JoinSessionRequest.device_info:type_name -> mpc.coordinator.v1.DeviceInfo - 8, // 6: mpc.coordinator.v1.JoinSessionResponse.session_info:type_name -> mpc.coordinator.v1.SessionInfo - 9, // 7: mpc.coordinator.v1.JoinSessionResponse.other_parties:type_name -> mpc.coordinator.v1.PartyInfo - 4, // 8: mpc.coordinator.v1.PartyInfo.device_info:type_name -> mpc.coordinator.v1.DeviceInfo - 12, // 9: mpc.coordinator.v1.GetSessionStatusResponse.delegate_share:type_name -> mpc.coordinator.v1.DelegateShareInfo - 0, // 10: mpc.coordinator.v1.SessionCoordinator.CreateSession:input_type -> mpc.coordinator.v1.CreateSessionRequest - 6, // 11: mpc.coordinator.v1.SessionCoordinator.JoinSession:input_type -> mpc.coordinator.v1.JoinSessionRequest - 10, // 12: mpc.coordinator.v1.SessionCoordinator.GetSessionStatus:input_type -> mpc.coordinator.v1.GetSessionStatusRequest - 17, // 13: mpc.coordinator.v1.SessionCoordinator.MarkPartyReady:input_type -> mpc.coordinator.v1.MarkPartyReadyRequest - 19, // 14: mpc.coordinator.v1.SessionCoordinator.StartSession:input_type -> mpc.coordinator.v1.StartSessionRequest - 13, // 15: mpc.coordinator.v1.SessionCoordinator.ReportCompletion:input_type -> mpc.coordinator.v1.ReportCompletionRequest - 15, // 16: mpc.coordinator.v1.SessionCoordinator.CloseSession:input_type -> mpc.coordinator.v1.CloseSessionRequest - 21, // 17: mpc.coordinator.v1.SessionCoordinator.SubmitDelegateShare:input_type -> mpc.coordinator.v1.SubmitDelegateShareRequest - 5, // 18: mpc.coordinator.v1.SessionCoordinator.CreateSession:output_type -> mpc.coordinator.v1.CreateSessionResponse - 7, // 19: mpc.coordinator.v1.SessionCoordinator.JoinSession:output_type -> mpc.coordinator.v1.JoinSessionResponse - 11, // 20: mpc.coordinator.v1.SessionCoordinator.GetSessionStatus:output_type -> mpc.coordinator.v1.GetSessionStatusResponse - 18, // 21: mpc.coordinator.v1.SessionCoordinator.MarkPartyReady:output_type -> mpc.coordinator.v1.MarkPartyReadyResponse - 20, // 22: mpc.coordinator.v1.SessionCoordinator.StartSession:output_type -> mpc.coordinator.v1.StartSessionResponse - 14, // 23: mpc.coordinator.v1.SessionCoordinator.ReportCompletion:output_type -> mpc.coordinator.v1.ReportCompletionResponse - 16, // 24: mpc.coordinator.v1.SessionCoordinator.CloseSession:output_type -> mpc.coordinator.v1.CloseSessionResponse - 22, // 25: mpc.coordinator.v1.SessionCoordinator.SubmitDelegateShare:output_type -> mpc.coordinator.v1.SubmitDelegateShareResponse - 18, // [18:26] is the sub-list for method output_type - 10, // [10:18] is the sub-list for method input_type - 10, // [10:10] is the sub-list for extension type_name - 10, // [10:10] is the sub-list for extension extendee - 0, // [0:10] is the sub-list for field type_name -} - -func init() { file_api_proto_session_coordinator_proto_init() } -func file_api_proto_session_coordinator_proto_init() { - if File_api_proto_session_coordinator_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_proto_session_coordinator_proto_rawDesc), len(file_api_proto_session_coordinator_proto_rawDesc)), - NumEnums: 0, - NumMessages: 24, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_api_proto_session_coordinator_proto_goTypes, - DependencyIndexes: file_api_proto_session_coordinator_proto_depIdxs, - MessageInfos: file_api_proto_session_coordinator_proto_msgTypes, - }.Build() - File_api_proto_session_coordinator_proto = out.File - file_api_proto_session_coordinator_proto_goTypes = nil - file_api_proto_session_coordinator_proto_depIdxs = nil -} diff --git a/backend/mpc-system/api/proto/session_coordinator_grpc.pb.go b/backend/mpc-system/api/proto/session_coordinator_grpc.pb.go deleted file mode 100644 index ec50e1d7..00000000 --- a/backend/mpc-system/api/proto/session_coordinator_grpc.pb.go +++ /dev/null @@ -1,395 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.6.0 -// - protoc v6.33.1 -// source: api/proto/session_coordinator.proto - -package coordinator - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - SessionCoordinator_CreateSession_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/CreateSession" - SessionCoordinator_JoinSession_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/JoinSession" - SessionCoordinator_GetSessionStatus_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/GetSessionStatus" - SessionCoordinator_MarkPartyReady_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/MarkPartyReady" - SessionCoordinator_StartSession_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/StartSession" - SessionCoordinator_ReportCompletion_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/ReportCompletion" - SessionCoordinator_CloseSession_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/CloseSession" - SessionCoordinator_SubmitDelegateShare_FullMethodName = "/mpc.coordinator.v1.SessionCoordinator/SubmitDelegateShare" -) - -// SessionCoordinatorClient is the client API for SessionCoordinator service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// SessionCoordinator service manages MPC sessions -type SessionCoordinatorClient interface { - // Session management - CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*CreateSessionResponse, error) - JoinSession(ctx context.Context, in *JoinSessionRequest, opts ...grpc.CallOption) (*JoinSessionResponse, error) - GetSessionStatus(ctx context.Context, in *GetSessionStatusRequest, opts ...grpc.CallOption) (*GetSessionStatusResponse, error) - MarkPartyReady(ctx context.Context, in *MarkPartyReadyRequest, opts ...grpc.CallOption) (*MarkPartyReadyResponse, error) - StartSession(ctx context.Context, in *StartSessionRequest, opts ...grpc.CallOption) (*StartSessionResponse, error) - ReportCompletion(ctx context.Context, in *ReportCompletionRequest, opts ...grpc.CallOption) (*ReportCompletionResponse, error) - CloseSession(ctx context.Context, in *CloseSessionRequest, opts ...grpc.CallOption) (*CloseSessionResponse, error) - // Delegate party share submission (delegate party submits user's share after keygen) - SubmitDelegateShare(ctx context.Context, in *SubmitDelegateShareRequest, opts ...grpc.CallOption) (*SubmitDelegateShareResponse, error) -} - -type sessionCoordinatorClient struct { - cc grpc.ClientConnInterface -} - -func NewSessionCoordinatorClient(cc grpc.ClientConnInterface) SessionCoordinatorClient { - return &sessionCoordinatorClient{cc} -} - -func (c *sessionCoordinatorClient) CreateSession(ctx context.Context, in *CreateSessionRequest, opts ...grpc.CallOption) (*CreateSessionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CreateSessionResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_CreateSession_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) JoinSession(ctx context.Context, in *JoinSessionRequest, opts ...grpc.CallOption) (*JoinSessionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(JoinSessionResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_JoinSession_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) GetSessionStatus(ctx context.Context, in *GetSessionStatusRequest, opts ...grpc.CallOption) (*GetSessionStatusResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetSessionStatusResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_GetSessionStatus_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) MarkPartyReady(ctx context.Context, in *MarkPartyReadyRequest, opts ...grpc.CallOption) (*MarkPartyReadyResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(MarkPartyReadyResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_MarkPartyReady_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) StartSession(ctx context.Context, in *StartSessionRequest, opts ...grpc.CallOption) (*StartSessionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StartSessionResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_StartSession_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) ReportCompletion(ctx context.Context, in *ReportCompletionRequest, opts ...grpc.CallOption) (*ReportCompletionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(ReportCompletionResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_ReportCompletion_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) CloseSession(ctx context.Context, in *CloseSessionRequest, opts ...grpc.CallOption) (*CloseSessionResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(CloseSessionResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_CloseSession_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *sessionCoordinatorClient) SubmitDelegateShare(ctx context.Context, in *SubmitDelegateShareRequest, opts ...grpc.CallOption) (*SubmitDelegateShareResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(SubmitDelegateShareResponse) - err := c.cc.Invoke(ctx, SessionCoordinator_SubmitDelegateShare_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// SessionCoordinatorServer is the server API for SessionCoordinator service. -// All implementations must embed UnimplementedSessionCoordinatorServer -// for forward compatibility. -// -// SessionCoordinator service manages MPC sessions -type SessionCoordinatorServer interface { - // Session management - CreateSession(context.Context, *CreateSessionRequest) (*CreateSessionResponse, error) - JoinSession(context.Context, *JoinSessionRequest) (*JoinSessionResponse, error) - GetSessionStatus(context.Context, *GetSessionStatusRequest) (*GetSessionStatusResponse, error) - MarkPartyReady(context.Context, *MarkPartyReadyRequest) (*MarkPartyReadyResponse, error) - StartSession(context.Context, *StartSessionRequest) (*StartSessionResponse, error) - ReportCompletion(context.Context, *ReportCompletionRequest) (*ReportCompletionResponse, error) - CloseSession(context.Context, *CloseSessionRequest) (*CloseSessionResponse, error) - // Delegate party share submission (delegate party submits user's share after keygen) - SubmitDelegateShare(context.Context, *SubmitDelegateShareRequest) (*SubmitDelegateShareResponse, error) - mustEmbedUnimplementedSessionCoordinatorServer() -} - -// UnimplementedSessionCoordinatorServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedSessionCoordinatorServer struct{} - -func (UnimplementedSessionCoordinatorServer) CreateSession(context.Context, *CreateSessionRequest) (*CreateSessionResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CreateSession not implemented") -} -func (UnimplementedSessionCoordinatorServer) JoinSession(context.Context, *JoinSessionRequest) (*JoinSessionResponse, error) { - return nil, status.Error(codes.Unimplemented, "method JoinSession not implemented") -} -func (UnimplementedSessionCoordinatorServer) GetSessionStatus(context.Context, *GetSessionStatusRequest) (*GetSessionStatusResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetSessionStatus not implemented") -} -func (UnimplementedSessionCoordinatorServer) MarkPartyReady(context.Context, *MarkPartyReadyRequest) (*MarkPartyReadyResponse, error) { - return nil, status.Error(codes.Unimplemented, "method MarkPartyReady not implemented") -} -func (UnimplementedSessionCoordinatorServer) StartSession(context.Context, *StartSessionRequest) (*StartSessionResponse, error) { - return nil, status.Error(codes.Unimplemented, "method StartSession not implemented") -} -func (UnimplementedSessionCoordinatorServer) ReportCompletion(context.Context, *ReportCompletionRequest) (*ReportCompletionResponse, error) { - return nil, status.Error(codes.Unimplemented, "method ReportCompletion not implemented") -} -func (UnimplementedSessionCoordinatorServer) CloseSession(context.Context, *CloseSessionRequest) (*CloseSessionResponse, error) { - return nil, status.Error(codes.Unimplemented, "method CloseSession not implemented") -} -func (UnimplementedSessionCoordinatorServer) SubmitDelegateShare(context.Context, *SubmitDelegateShareRequest) (*SubmitDelegateShareResponse, error) { - return nil, status.Error(codes.Unimplemented, "method SubmitDelegateShare not implemented") -} -func (UnimplementedSessionCoordinatorServer) mustEmbedUnimplementedSessionCoordinatorServer() {} -func (UnimplementedSessionCoordinatorServer) testEmbeddedByValue() {} - -// UnsafeSessionCoordinatorServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to SessionCoordinatorServer will -// result in compilation errors. -type UnsafeSessionCoordinatorServer interface { - mustEmbedUnimplementedSessionCoordinatorServer() -} - -func RegisterSessionCoordinatorServer(s grpc.ServiceRegistrar, srv SessionCoordinatorServer) { - // If the following call panics, it indicates UnimplementedSessionCoordinatorServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&SessionCoordinator_ServiceDesc, srv) -} - -func _SessionCoordinator_CreateSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CreateSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).CreateSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_CreateSession_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).CreateSession(ctx, req.(*CreateSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_JoinSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(JoinSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).JoinSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_JoinSession_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).JoinSession(ctx, req.(*JoinSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_GetSessionStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetSessionStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).GetSessionStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_GetSessionStatus_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).GetSessionStatus(ctx, req.(*GetSessionStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_MarkPartyReady_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MarkPartyReadyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).MarkPartyReady(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_MarkPartyReady_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).MarkPartyReady(ctx, req.(*MarkPartyReadyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_StartSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StartSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).StartSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_StartSession_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).StartSession(ctx, req.(*StartSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_ReportCompletion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(ReportCompletionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).ReportCompletion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_ReportCompletion_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).ReportCompletion(ctx, req.(*ReportCompletionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_CloseSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(CloseSessionRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).CloseSession(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_CloseSession_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).CloseSession(ctx, req.(*CloseSessionRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _SessionCoordinator_SubmitDelegateShare_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SubmitDelegateShareRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(SessionCoordinatorServer).SubmitDelegateShare(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: SessionCoordinator_SubmitDelegateShare_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(SessionCoordinatorServer).SubmitDelegateShare(ctx, req.(*SubmitDelegateShareRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// SessionCoordinator_ServiceDesc is the grpc.ServiceDesc for SessionCoordinator service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var SessionCoordinator_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "mpc.coordinator.v1.SessionCoordinator", - HandlerType: (*SessionCoordinatorServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "CreateSession", - Handler: _SessionCoordinator_CreateSession_Handler, - }, - { - MethodName: "JoinSession", - Handler: _SessionCoordinator_JoinSession_Handler, - }, - { - MethodName: "GetSessionStatus", - Handler: _SessionCoordinator_GetSessionStatus_Handler, - }, - { - MethodName: "MarkPartyReady", - Handler: _SessionCoordinator_MarkPartyReady_Handler, - }, - { - MethodName: "StartSession", - Handler: _SessionCoordinator_StartSession_Handler, - }, - { - MethodName: "ReportCompletion", - Handler: _SessionCoordinator_ReportCompletion_Handler, - }, - { - MethodName: "CloseSession", - Handler: _SessionCoordinator_CloseSession_Handler, - }, - { - MethodName: "SubmitDelegateShare", - Handler: _SessionCoordinator_SubmitDelegateShare_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "api/proto/session_coordinator.proto", -} diff --git a/backend/mpc-system/services/message-router/adapters/input/grpc/message_grpc_handler.go b/backend/mpc-system/services/message-router/adapters/input/grpc/message_grpc_handler.go index 042751d1..97ad374c 100644 --- a/backend/mpc-system/services/message-router/adapters/input/grpc/message_grpc_handler.go +++ b/backend/mpc-system/services/message-router/adapters/input/grpc/message_grpc_handler.go @@ -510,11 +510,12 @@ func (s *MessageRouterServer) JoinSession( if coordResp.SessionInfo != nil { resp.SessionInfo = &pb.SessionInfo{ - SessionId: req.SessionId, - SessionType: coordResp.SessionInfo.SessionType, - ThresholdN: coordResp.SessionInfo.ThresholdN, - ThresholdT: coordResp.SessionInfo.ThresholdT, - MessageHash: coordResp.SessionInfo.MessageHash, + SessionId: req.SessionId, + SessionType: coordResp.SessionInfo.SessionType, + ThresholdN: coordResp.SessionInfo.ThresholdN, + ThresholdT: coordResp.SessionInfo.ThresholdT, + MessageHash: coordResp.SessionInfo.MessageHash, + KeygenSessionId: coordResp.SessionInfo.KeygenSessionId, } } diff --git a/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go b/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go index ad5aeacd..40ece983 100644 --- a/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go +++ b/backend/mpc-system/services/server-party/adapters/output/grpc/message_router_client.go @@ -673,6 +673,13 @@ func (c *MessageRouterClient) JoinSession( sessionInfo.ThresholdN = int(resp.SessionInfo.ThresholdN) sessionInfo.ThresholdT = int(resp.SessionInfo.ThresholdT) sessionInfo.MessageHash = resp.SessionInfo.MessageHash + + // Parse keygen_session_id if provided (for signing sessions) + if resp.SessionInfo.KeygenSessionId != "" { + if keygenID, err := uuid.Parse(resp.SessionInfo.KeygenSessionId); err == nil { + sessionInfo.KeygenSessionID = keygenID + } + } } logger.Info("Joined session via Message Router", diff --git a/backend/mpc-system/services/session-coordinator/adapters/input/grpc/session_grpc_handler.go b/backend/mpc-system/services/session-coordinator/adapters/input/grpc/session_grpc_handler.go index 125543a5..3ec512d0 100644 --- a/backend/mpc-system/services/session-coordinator/adapters/input/grpc/session_grpc_handler.go +++ b/backend/mpc-system/services/session-coordinator/adapters/input/grpc/session_grpc_handler.go @@ -160,6 +160,18 @@ func (s *SessionCoordinatorServer) CreateSession( ExpiresIn: time.Duration(req.ExpiresInSeconds) * time.Second, } + // Parse and set keygen_session_id if provided (for signing sessions) + if req.KeygenSessionId != "" { + keygenSessionID, err := uuid.Parse(req.KeygenSessionId) + if err == nil { + inputData.KeygenSessionID = keygenSessionID + } else { + logger.Warn("Invalid keygen_session_id format", + zap.String("keygen_session_id", req.KeygenSessionId), + zap.Error(err)) + } + } + // Add party composition if provided (for automatic party selection) if req.PartyComposition != nil { inputData.PartyComposition = &input.PartyComposition{ @@ -270,15 +282,22 @@ func (s *SessionCoordinatorServer) JoinSession( zap.Int32("proto_party_index", otherParties[i].PartyIndex)) } + // Convert keygen_session_id to string (empty if nil) + keygenSessionIDStr := "" + if output.SessionInfo.KeygenSessionID != uuid.Nil { + keygenSessionIDStr = output.SessionInfo.KeygenSessionID.String() + } + return &pb.JoinSessionResponse{ Success: output.Success, SessionInfo: &pb.SessionInfo{ - SessionId: output.SessionInfo.SessionID.String(), - SessionType: output.SessionInfo.SessionType, - ThresholdN: int32(output.SessionInfo.ThresholdN), - ThresholdT: int32(output.SessionInfo.ThresholdT), - MessageHash: output.SessionInfo.MessageHash, - Status: output.SessionInfo.Status, + SessionId: output.SessionInfo.SessionID.String(), + SessionType: output.SessionInfo.SessionType, + ThresholdN: int32(output.SessionInfo.ThresholdN), + ThresholdT: int32(output.SessionInfo.ThresholdT), + MessageHash: output.SessionInfo.MessageHash, + Status: output.SessionInfo.Status, + KeygenSessionId: keygenSessionIDStr, }, OtherParties: otherParties, PartyIndex: int32(output.PartyIndex), diff --git a/backend/mpc-system/services/session-coordinator/adapters/output/postgres/session_postgres_repo.go b/backend/mpc-system/services/session-coordinator/adapters/output/postgres/session_postgres_repo.go index 7406bbf2..4323418b 100644 --- a/backend/mpc-system/services/session-coordinator/adapters/output/postgres/session_postgres_repo.go +++ b/backend/mpc-system/services/session-coordinator/adapters/output/postgres/session_postgres_repo.go @@ -37,13 +37,14 @@ func (r *SessionPostgresRepo) Save(ctx context.Context, session *entities.MPCSes _, err = tx.ExecContext(ctx, ` INSERT INTO mpc_sessions ( id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, delegate_party_id, created_by, created_at, updated_at, expires_at, completed_at, version - ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version + ) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15) ON CONFLICT (id) DO UPDATE SET status = EXCLUDED.status, message_hash = EXCLUDED.message_hash, public_key = EXCLUDED.public_key, delegate_party_id = EXCLUDED.delegate_party_id, + keygen_session_id = EXCLUDED.keygen_session_id, updated_at = EXCLUDED.updated_at, completed_at = EXCLUDED.completed_at, version = EXCLUDED.version @@ -56,6 +57,7 @@ func (r *SessionPostgresRepo) Save(ctx context.Context, session *entities.MPCSes session.MessageHash, session.PublicKey, session.DelegatePartyID, + nullUUID(session.KeygenSessionID), session.CreatedBy, session.CreatedAt, session.UpdatedAt, @@ -118,7 +120,7 @@ func (r *SessionPostgresRepo) FindByUUID(ctx context.Context, id uuid.UUID) (*en var session sessionRow err := r.db.QueryRowContext(ctx, ` SELECT id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, delegate_party_id, created_by, created_at, updated_at, expires_at, completed_at, version + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version FROM mpc_sessions WHERE id = $1 `, id).Scan( &session.ID, @@ -129,6 +131,7 @@ func (r *SessionPostgresRepo) FindByUUID(ctx context.Context, id uuid.UUID) (*en &session.MessageHash, &session.PublicKey, &session.DelegatePartyID, + &session.KeygenSessionID, &session.CreatedBy, &session.CreatedAt, &session.UpdatedAt, @@ -149,6 +152,12 @@ func (r *SessionPostgresRepo) FindByUUID(ctx context.Context, id uuid.UUID) (*en return nil, err } + // Convert nullable KeygenSessionID + var keygenSessionID uuid.UUID + if session.KeygenSessionID != nil { + keygenSessionID = *session.KeygenSessionID + } + return entities.ReconstructSession( session.ID, session.SessionType, @@ -158,6 +167,7 @@ func (r *SessionPostgresRepo) FindByUUID(ctx context.Context, id uuid.UUID) (*en session.MessageHash, session.PublicKey, session.DelegatePartyID, + keygenSessionID, session.CreatedBy, session.CreatedAt, session.UpdatedAt, @@ -172,7 +182,7 @@ func (r *SessionPostgresRepo) FindByUUID(ctx context.Context, id uuid.UUID) (*en func (r *SessionPostgresRepo) FindByStatus(ctx context.Context, status value_objects.SessionStatus) ([]*entities.MPCSession, error) { rows, err := r.db.QueryContext(ctx, ` SELECT id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, delegate_party_id, created_by, created_at, updated_at, expires_at, completed_at, version + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version FROM mpc_sessions WHERE status = $1 `, status.String()) if err != nil { @@ -187,7 +197,7 @@ func (r *SessionPostgresRepo) FindByStatus(ctx context.Context, status value_obj func (r *SessionPostgresRepo) FindExpired(ctx context.Context) ([]*entities.MPCSession, error) { rows, err := r.db.QueryContext(ctx, ` SELECT id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, delegate_party_id, created_by, created_at, updated_at, expires_at, completed_at, version + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version FROM mpc_sessions WHERE expires_at < NOW() AND status IN ('created', 'in_progress') `) @@ -203,7 +213,7 @@ func (r *SessionPostgresRepo) FindExpired(ctx context.Context) ([]*entities.MPCS func (r *SessionPostgresRepo) FindActive(ctx context.Context) ([]*entities.MPCSession, error) { rows, err := r.db.QueryContext(ctx, ` SELECT id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, delegate_party_id, created_by, created_at, updated_at, expires_at, completed_at, version + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version FROM mpc_sessions WHERE status IN ('created', 'in_progress') ORDER BY created_at ASC @@ -220,7 +230,7 @@ func (r *SessionPostgresRepo) FindActive(ctx context.Context) ([]*entities.MPCSe func (r *SessionPostgresRepo) FindByCreator(ctx context.Context, creatorID string) ([]*entities.MPCSession, error) { rows, err := r.db.QueryContext(ctx, ` SELECT id, session_type, threshold_n, threshold_t, status, - message_hash, public_key, created_by, created_at, updated_at, expires_at, completed_at, version + message_hash, public_key, delegate_party_id, keygen_session_id, created_by, created_at, updated_at, expires_at, completed_at, version FROM mpc_sessions WHERE created_by = $1 ORDER BY created_at DESC `, creatorID) @@ -236,7 +246,7 @@ func (r *SessionPostgresRepo) FindByCreator(ctx context.Context, creatorID strin func (r *SessionPostgresRepo) FindActiveByParticipant(ctx context.Context, partyID value_objects.PartyID) ([]*entities.MPCSession, error) { rows, err := r.db.QueryContext(ctx, ` SELECT s.id, s.session_type, s.threshold_n, s.threshold_t, s.status, - s.message_hash, s.public_key, s.created_by, s.created_at, s.updated_at, s.expires_at, s.completed_at, s.version + s.message_hash, s.public_key, s.delegate_party_id, s.keygen_session_id, s.created_by, s.created_at, s.updated_at, s.expires_at, s.completed_at, s.version FROM mpc_sessions s JOIN participants p ON s.id = p.session_id WHERE p.party_id = $1 AND s.status IN ('created', 'in_progress') @@ -487,6 +497,7 @@ func (r *SessionPostgresRepo) scanSessions(ctx context.Context, rows *sql.Rows) &s.MessageHash, &s.PublicKey, &s.DelegatePartyID, + &s.KeygenSessionID, &s.CreatedBy, &s.CreatedAt, &s.UpdatedAt, @@ -503,6 +514,12 @@ func (r *SessionPostgresRepo) scanSessions(ctx context.Context, rows *sql.Rows) return nil, err } + // Convert nullable KeygenSessionID + var keygenSessionID uuid.UUID + if s.KeygenSessionID != nil { + keygenSessionID = *s.KeygenSessionID + } + session, err := entities.ReconstructSession( s.ID, s.SessionType, @@ -512,6 +529,7 @@ func (r *SessionPostgresRepo) scanSessions(ctx context.Context, rows *sql.Rows) s.MessageHash, s.PublicKey, s.DelegatePartyID, + keygenSessionID, s.CreatedBy, s.CreatedAt, s.UpdatedAt, @@ -539,6 +557,7 @@ type sessionRow struct { MessageHash []byte PublicKey []byte DelegatePartyID string + KeygenSessionID *uuid.UUID CreatedBy string CreatedAt time.Time UpdatedAt time.Time @@ -565,3 +584,11 @@ var _ repositories.SessionRepository = (*SessionPostgresRepo)(nil) // Use pq for array handling var _ = pq.Array + +// nullUUID converts a UUID to a nullable database value +func nullUUID(u uuid.UUID) interface{} { + if u == uuid.Nil { + return nil + } + return u +} diff --git a/backend/mpc-system/services/session-coordinator/application/ports/input/session_management_port.go b/backend/mpc-system/services/session-coordinator/application/ports/input/session_management_port.go index c72216c5..1fedfe65 100644 --- a/backend/mpc-system/services/session-coordinator/application/ports/input/session_management_port.go +++ b/backend/mpc-system/services/session-coordinator/application/ports/input/session_management_port.go @@ -54,6 +54,7 @@ type CreateSessionInput struct { MessageHash []byte // For sign sessions ExpiresIn time.Duration DelegateUserShare *DelegateUserShare // For sign sessions with delegate party + KeygenSessionID uuid.UUID // For sign sessions: which keygen session's shares to use } // ParticipantInfo contains information about a participant @@ -87,12 +88,13 @@ type JoinSessionOutput struct { // SessionInfo contains session information type SessionInfo struct { - SessionID uuid.UUID - SessionType string - ThresholdN int - ThresholdT int - MessageHash []byte - Status string + SessionID uuid.UUID + SessionType string + ThresholdN int + ThresholdT int + MessageHash []byte + Status string + KeygenSessionID uuid.UUID // For sign sessions: which keygen session's shares to use } // PartyInfo contains party information diff --git a/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go b/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go index de70aae1..9e6902eb 100644 --- a/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go +++ b/backend/mpc-system/services/session-coordinator/application/use_cases/create_session.go @@ -130,6 +130,14 @@ func (uc *CreateSessionUseCase) Execute( return nil, err } + // 4.1 Set keygen_session_id for sign sessions + if req.KeygenSessionID != uuid.Nil { + session.KeygenSessionID = req.KeygenSessionID + logger.Info("Sign session created with keygen_session_id", + zap.String("session_id", session.ID.String()), + zap.String("keygen_session_id", req.KeygenSessionID.String())) + } + // 5. Add participants and generate join tokens tokens := make(map[string]string) if len(req.Participants) == 0 { diff --git a/backend/mpc-system/services/session-coordinator/application/use_cases/join_session.go b/backend/mpc-system/services/session-coordinator/application/use_cases/join_session.go index 582b6782..f32cd21c 100644 --- a/backend/mpc-system/services/session-coordinator/application/use_cases/join_session.go +++ b/backend/mpc-system/services/session-coordinator/application/use_cases/join_session.go @@ -166,12 +166,13 @@ func (uc *JoinSessionUseCase) Execute( Success: true, PartyIndex: participant.PartyIndex, SessionInfo: input.SessionInfo{ - SessionID: session.ID.UUID(), - SessionType: string(session.SessionType), - ThresholdN: session.Threshold.N(), - ThresholdT: session.Threshold.T(), - MessageHash: session.MessageHash, - Status: session.Status.String(), + SessionID: session.ID.UUID(), + SessionType: string(session.SessionType), + ThresholdN: session.Threshold.N(), + ThresholdT: session.Threshold.T(), + MessageHash: session.MessageHash, + Status: session.Status.String(), + KeygenSessionID: session.KeygenSessionID, }, OtherParties: partyInfos, }, nil diff --git a/backend/mpc-system/services/session-coordinator/domain/entities/mpc_session.go b/backend/mpc-system/services/session-coordinator/domain/entities/mpc_session.go index ee34681e..b2815c75 100644 --- a/backend/mpc-system/services/session-coordinator/domain/entities/mpc_session.go +++ b/backend/mpc-system/services/session-coordinator/domain/entities/mpc_session.go @@ -385,6 +385,7 @@ func ReconstructSession( status string, messageHash, publicKey []byte, delegatePartyID string, + keygenSessionID uuid.UUID, createdBy string, createdAt, updatedAt, expiresAt time.Time, completedAt *time.Time, @@ -403,18 +404,19 @@ func ReconstructSession( return &MPCSession{ ID: value_objects.SessionIDFromUUID(id), - SessionType: SessionType(sessionType), - Threshold: threshold, - Participants: participants, - Status: sessionStatus, - MessageHash: messageHash, - PublicKey: publicKey, + SessionType: SessionType(sessionType), + Threshold: threshold, + Participants: participants, + Status: sessionStatus, + MessageHash: messageHash, + PublicKey: publicKey, DelegatePartyID: delegatePartyID, - CreatedBy: createdBy, - CreatedAt: createdAt, - UpdatedAt: updatedAt, - ExpiresAt: expiresAt, - CompletedAt: completedAt, - Version: version, + KeygenSessionID: keygenSessionID, + CreatedBy: createdBy, + CreatedAt: createdAt, + UpdatedAt: updatedAt, + ExpiresAt: expiresAt, + CompletedAt: completedAt, + Version: version, }, nil }