diff --git a/go/generate.go b/go/generate.go index 4b538070..a4d4aadb 100644 --- a/go/generate.go +++ b/go/generate.go @@ -17,6 +17,7 @@ import ( //go:generate compile ../proto/keystore_api/v1/keystore.proto //go:generate compile ../proto/message_api/v1/message_api.proto //go:generate compile ../proto/message_api/v3/mls.proto +//go:generate compile ../proto/mls_validation/v1/service.proto //go:generate compile ../proto/mls/message_contents/message.proto //go:generate compile ../proto/message_api/v1/authn.proto //go:generate compile ../proto/message_contents/content.proto diff --git a/go/keystore_api/v1/keystore.pb.go b/go/keystore_api/v1/keystore.pb.go index 67c45322..7d92dc82 100644 --- a/go/keystore_api/v1/keystore.pb.go +++ b/go/keystore_api/v1/keystore.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: keystore_api/v1/keystore.proto package v1 @@ -1217,7 +1217,6 @@ type InitKeystoreRequest struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Bundle: - // // *InitKeystoreRequest_V1 Bundle isInitKeystoreRequest_Bundle `protobuf_oneof:"bundle"` } @@ -1335,7 +1334,6 @@ type SignDigestRequest struct { Digest []byte `protobuf:"bytes,1,opt,name=digest,proto3" json:"digest,omitempty"` // Types that are assignable to Signer: - // // *SignDigestRequest_IdentityKey // *SignDigestRequest_PrekeyIndex Signer isSignDigestRequest_Signer `protobuf_oneof:"signer"` @@ -1735,7 +1733,6 @@ type DecryptResponse_Response struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *DecryptResponse_Response_Result // *DecryptResponse_Response_Error Response isDecryptResponse_Response_Response `protobuf_oneof:"response"` @@ -1993,7 +1990,6 @@ type EncryptResponse_Response struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *EncryptResponse_Response_Result // *EncryptResponse_Response_Error Response isEncryptResponse_Response_Response `protobuf_oneof:"response"` @@ -2235,7 +2231,6 @@ type SelfEncryptResponse_Response struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *SelfEncryptResponse_Response_Result // *SelfEncryptResponse_Response_Error Response isSelfEncryptResponse_Response_Response `protobuf_oneof:"response"` @@ -2477,7 +2472,6 @@ type SaveInvitesResponse_Response struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Response: - // // *SaveInvitesResponse_Response_Result // *SaveInvitesResponse_Response_Error Response isSaveInvitesResponse_Response_Response `protobuf_oneof:"response"` diff --git a/go/message_api/v1/authn.pb.go b/go/message_api/v1/authn.pb.go index dfe2fe55..2f86aaab 100644 --- a/go/message_api/v1/authn.pb.go +++ b/go/message_api/v1/authn.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_api/v1/authn.proto package v1 diff --git a/go/message_api/v1/message_api.pb.go b/go/message_api/v1/message_api.pb.go index dd46ff38..b5dd61fc 100644 --- a/go/message_api/v1/message_api.pb.go +++ b/go/message_api/v1/message_api.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_api/v1/message_api.proto package v1 @@ -143,7 +143,6 @@ type Cursor struct { // This way we can handle both methods // // Types that are assignable to Cursor: - // // *Cursor_Index Cursor isCursor_Cursor `protobuf_oneof:"cursor"` } diff --git a/go/message_api/v1/message_api_grpc.pb.go b/go/message_api/v1/message_api_grpc.pb.go index a8e51579..f2453d62 100644 --- a/go/message_api/v1/message_api_grpc.pb.go +++ b/go/message_api/v1/message_api_grpc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.3 +// - protoc v3.21.12 // source: message_api/v1/message_api.proto package v1 diff --git a/go/message_api/v3/mls.pb.go b/go/message_api/v3/mls.pb.go index 75ed7c85..6d4e92dd 100644 --- a/go/message_api/v3/mls.pb.go +++ b/go/message_api/v3/mls.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_api/v3/mls.proto package v3 @@ -123,20 +123,70 @@ func (x *PublishWelcomesRequest) GetWelcomeMessages() []*PublishWelcomesRequest_ return nil } +// A wrapper around the Key Package bytes +type KeyPackageUpload struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The owner's wallet address would be extracted from the identity + // credential in the key package, and all signatures would be validated. + KeyPackageTlsSerialized []byte `protobuf:"bytes,1,opt,name=key_package_tls_serialized,json=keyPackageTlsSerialized,proto3" json:"key_package_tls_serialized,omitempty"` +} + +func (x *KeyPackageUpload) Reset() { + *x = KeyPackageUpload{} + if protoimpl.UnsafeEnabled { + mi := &file_message_api_v3_mls_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KeyPackageUpload) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeyPackageUpload) ProtoMessage() {} + +func (x *KeyPackageUpload) ProtoReflect() protoreflect.Message { + mi := &file_message_api_v3_mls_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeyPackageUpload.ProtoReflect.Descriptor instead. +func (*KeyPackageUpload) Descriptor() ([]byte, []int) { + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{2} +} + +func (x *KeyPackageUpload) GetKeyPackageTlsSerialized() []byte { + if x != nil { + return x.KeyPackageTlsSerialized + } + return nil +} + // Register a new installation type RegisterInstallationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CredentialBytes []byte `protobuf:"bytes,1,opt,name=credential_bytes,json=credentialBytes,proto3" json:"credential_bytes,omitempty"` - SigningKeyPublic []byte `protobuf:"bytes,2,opt,name=signing_key_public,json=signingKeyPublic,proto3" json:"signing_key_public,omitempty"` + // The Key Package contains all information needed to register an installation + LastResortKeyPackage *KeyPackageUpload `protobuf:"bytes,1,opt,name=last_resort_key_package,json=lastResortKeyPackage,proto3" json:"last_resort_key_package,omitempty"` } func (x *RegisterInstallationRequest) Reset() { *x = RegisterInstallationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[2] + mi := &file_message_api_v3_mls_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -149,7 +199,7 @@ func (x *RegisterInstallationRequest) String() string { func (*RegisterInstallationRequest) ProtoMessage() {} func (x *RegisterInstallationRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[2] + mi := &file_message_api_v3_mls_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -162,35 +212,29 @@ func (x *RegisterInstallationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterInstallationRequest.ProtoReflect.Descriptor instead. func (*RegisterInstallationRequest) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{2} -} - -func (x *RegisterInstallationRequest) GetCredentialBytes() []byte { - if x != nil { - return x.CredentialBytes - } - return nil + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{3} } -func (x *RegisterInstallationRequest) GetSigningKeyPublic() []byte { +func (x *RegisterInstallationRequest) GetLastResortKeyPackage() *KeyPackageUpload { if x != nil { - return x.SigningKeyPublic + return x.LastResortKeyPackage } return nil } +// The response to a RegisterInstallationRequest type RegisterInstallationResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstallationId string `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + InstallationId []byte `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` } func (x *RegisterInstallationResponse) Reset() { *x = RegisterInstallationResponse{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[3] + mi := &file_message_api_v3_mls_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -203,7 +247,7 @@ func (x *RegisterInstallationResponse) String() string { func (*RegisterInstallationResponse) ProtoMessage() {} func (x *RegisterInstallationResponse) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[3] + mi := &file_message_api_v3_mls_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -216,14 +260,14 @@ func (x *RegisterInstallationResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterInstallationResponse.ProtoReflect.Descriptor instead. func (*RegisterInstallationResponse) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{3} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{4} } -func (x *RegisterInstallationResponse) GetInstallationId() string { +func (x *RegisterInstallationResponse) GetInstallationId() []byte { if x != nil { return x.InstallationId } - return "" + return nil } // Upload one or more key packages @@ -232,13 +276,14 @@ type UploadKeyPackagesRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - KeyPackages []*UploadKeyPackagesRequest_KeyPackageUpload `protobuf:"bytes,1,rep,name=key_packages,json=keyPackages,proto3" json:"key_packages,omitempty"` + // An individual key package upload request + KeyPackages []*KeyPackageUpload `protobuf:"bytes,1,rep,name=key_packages,json=keyPackages,proto3" json:"key_packages,omitempty"` } func (x *UploadKeyPackagesRequest) Reset() { *x = UploadKeyPackagesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[4] + mi := &file_message_api_v3_mls_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -251,7 +296,7 @@ func (x *UploadKeyPackagesRequest) String() string { func (*UploadKeyPackagesRequest) ProtoMessage() {} func (x *UploadKeyPackagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[4] + mi := &file_message_api_v3_mls_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -264,10 +309,10 @@ func (x *UploadKeyPackagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UploadKeyPackagesRequest.ProtoReflect.Descriptor instead. func (*UploadKeyPackagesRequest) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{4} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{5} } -func (x *UploadKeyPackagesRequest) GetKeyPackages() []*UploadKeyPackagesRequest_KeyPackageUpload { +func (x *UploadKeyPackagesRequest) GetKeyPackages() []*KeyPackageUpload { if x != nil { return x.KeyPackages } @@ -283,13 +328,13 @@ type ConsumeKeyPackagesRequest struct { // The caller can provide an array of wallet addresses, and the API // will return one key package for each installation associated with each // wallet address - InstallationIds []string `protobuf:"bytes,1,rep,name=installation_ids,json=installationIds,proto3" json:"installation_ids,omitempty"` + InstallationIds [][]byte `protobuf:"bytes,1,rep,name=installation_ids,json=installationIds,proto3" json:"installation_ids,omitempty"` } func (x *ConsumeKeyPackagesRequest) Reset() { *x = ConsumeKeyPackagesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[5] + mi := &file_message_api_v3_mls_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -302,7 +347,7 @@ func (x *ConsumeKeyPackagesRequest) String() string { func (*ConsumeKeyPackagesRequest) ProtoMessage() {} func (x *ConsumeKeyPackagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[5] + mi := &file_message_api_v3_mls_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -315,10 +360,10 @@ func (x *ConsumeKeyPackagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsumeKeyPackagesRequest.ProtoReflect.Descriptor instead. func (*ConsumeKeyPackagesRequest) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{5} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{6} } -func (x *ConsumeKeyPackagesRequest) GetInstallationIds() []string { +func (x *ConsumeKeyPackagesRequest) GetInstallationIds() [][]byte { if x != nil { return x.InstallationIds } @@ -339,7 +384,7 @@ type ConsumeKeyPackagesResponse struct { func (x *ConsumeKeyPackagesResponse) Reset() { *x = ConsumeKeyPackagesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[6] + mi := &file_message_api_v3_mls_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -352,7 +397,7 @@ func (x *ConsumeKeyPackagesResponse) String() string { func (*ConsumeKeyPackagesResponse) ProtoMessage() {} func (x *ConsumeKeyPackagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[6] + mi := &file_message_api_v3_mls_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -365,7 +410,7 @@ func (x *ConsumeKeyPackagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConsumeKeyPackagesResponse.ProtoReflect.Descriptor instead. func (*ConsumeKeyPackagesResponse) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{6} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{7} } func (x *ConsumeKeyPackagesResponse) GetKeyPackages() []*ConsumeKeyPackagesResponse_KeyPackage { @@ -381,7 +426,7 @@ type RevokeInstallationRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstallationId string `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + InstallationId []byte `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` // All revocations must be validated with a wallet signature over the // installation_id being revoked (and some sort of standard prologue) WalletSignature *message_contents1.Signature `protobuf:"bytes,2,opt,name=wallet_signature,json=walletSignature,proto3" json:"wallet_signature,omitempty"` @@ -390,7 +435,7 @@ type RevokeInstallationRequest struct { func (x *RevokeInstallationRequest) Reset() { *x = RevokeInstallationRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[7] + mi := &file_message_api_v3_mls_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -403,7 +448,7 @@ func (x *RevokeInstallationRequest) String() string { func (*RevokeInstallationRequest) ProtoMessage() {} func (x *RevokeInstallationRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[7] + mi := &file_message_api_v3_mls_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -416,14 +461,14 @@ func (x *RevokeInstallationRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RevokeInstallationRequest.ProtoReflect.Descriptor instead. func (*RevokeInstallationRequest) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{7} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{8} } -func (x *RevokeInstallationRequest) GetInstallationId() string { +func (x *RevokeInstallationRequest) GetInstallationId() []byte { if x != nil { return x.InstallationId } - return "" + return nil } func (x *RevokeInstallationRequest) GetWalletSignature() *message_contents1.Signature { @@ -446,7 +491,7 @@ type GetIdentityUpdatesRequest struct { func (x *GetIdentityUpdatesRequest) Reset() { *x = GetIdentityUpdatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[8] + mi := &file_message_api_v3_mls_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -459,7 +504,7 @@ func (x *GetIdentityUpdatesRequest) String() string { func (*GetIdentityUpdatesRequest) ProtoMessage() {} func (x *GetIdentityUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[8] + mi := &file_message_api_v3_mls_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -472,7 +517,7 @@ func (x *GetIdentityUpdatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIdentityUpdatesRequest.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesRequest) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{8} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9} } func (x *GetIdentityUpdatesRequest) GetWalletAddresses() []string { @@ -503,7 +548,7 @@ type GetIdentityUpdatesResponse struct { func (x *GetIdentityUpdatesResponse) Reset() { *x = GetIdentityUpdatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[9] + mi := &file_message_api_v3_mls_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -516,7 +561,7 @@ func (x *GetIdentityUpdatesResponse) String() string { func (*GetIdentityUpdatesResponse) ProtoMessage() {} func (x *GetIdentityUpdatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[9] + mi := &file_message_api_v3_mls_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -529,7 +574,7 @@ func (x *GetIdentityUpdatesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetIdentityUpdatesResponse.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesResponse) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{10} } func (x *GetIdentityUpdatesResponse) GetUpdates() []*GetIdentityUpdatesResponse_WalletUpdates { @@ -546,14 +591,14 @@ type PublishWelcomesRequest_WelcomeMessageRequest struct { unknownFields protoimpl.UnknownFields // The topic will be derived from this - InstallationId string `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + InstallationId []byte `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` WelcomeMessage *message_contents.WelcomeMessage `protobuf:"bytes,2,opt,name=welcome_message,json=welcomeMessage,proto3" json:"welcome_message,omitempty"` } func (x *PublishWelcomesRequest_WelcomeMessageRequest) Reset() { *x = PublishWelcomesRequest_WelcomeMessageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[10] + mi := &file_message_api_v3_mls_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -566,7 +611,7 @@ func (x *PublishWelcomesRequest_WelcomeMessageRequest) String() string { func (*PublishWelcomesRequest_WelcomeMessageRequest) ProtoMessage() {} func (x *PublishWelcomesRequest_WelcomeMessageRequest) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[10] + mi := &file_message_api_v3_mls_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -582,11 +627,11 @@ func (*PublishWelcomesRequest_WelcomeMessageRequest) Descriptor() ([]byte, []int return file_message_api_v3_mls_proto_rawDescGZIP(), []int{1, 0} } -func (x *PublishWelcomesRequest_WelcomeMessageRequest) GetInstallationId() string { +func (x *PublishWelcomesRequest_WelcomeMessageRequest) GetInstallationId() []byte { if x != nil { return x.InstallationId } - return "" + return nil } func (x *PublishWelcomesRequest_WelcomeMessageRequest) GetWelcomeMessage() *message_contents.WelcomeMessage { @@ -596,66 +641,6 @@ func (x *PublishWelcomesRequest_WelcomeMessageRequest) GetWelcomeMessage() *mess return nil } -// An individual key package upload request -type UploadKeyPackagesRequest_KeyPackageUpload struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The owner's wallet address would be extracted from the identity - // credential in the key package, and all signatures would be validated. - KeyPackageTlsSerialized []byte `protobuf:"bytes,1,opt,name=key_package_tls_serialized,json=keyPackageTlsSerialized,proto3" json:"key_package_tls_serialized,omitempty"` - // The node will always treat the most recent last-resort key package as - // the active one, and will ignore all others. - IsLastResort bool `protobuf:"varint,2,opt,name=is_last_resort,json=isLastResort,proto3" json:"is_last_resort,omitempty"` -} - -func (x *UploadKeyPackagesRequest_KeyPackageUpload) Reset() { - *x = UploadKeyPackagesRequest_KeyPackageUpload{} - if protoimpl.UnsafeEnabled { - mi := &file_message_api_v3_mls_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UploadKeyPackagesRequest_KeyPackageUpload) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UploadKeyPackagesRequest_KeyPackageUpload) ProtoMessage() {} - -func (x *UploadKeyPackagesRequest_KeyPackageUpload) ProtoReflect() protoreflect.Message { - mi := &file_message_api_v3_mls_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UploadKeyPackagesRequest_KeyPackageUpload.ProtoReflect.Descriptor instead. -func (*UploadKeyPackagesRequest_KeyPackageUpload) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{4, 0} -} - -func (x *UploadKeyPackagesRequest_KeyPackageUpload) GetKeyPackageTlsSerialized() []byte { - if x != nil { - return x.KeyPackageTlsSerialized - } - return nil -} - -func (x *UploadKeyPackagesRequest_KeyPackageUpload) GetIsLastResort() bool { - if x != nil { - return x.IsLastResort - } - return false -} - // An individual key package type ConsumeKeyPackagesResponse_KeyPackage struct { state protoimpl.MessageState @@ -694,7 +679,7 @@ func (x *ConsumeKeyPackagesResponse_KeyPackage) ProtoReflect() protoreflect.Mess // Deprecated: Use ConsumeKeyPackagesResponse_KeyPackage.ProtoReflect.Descriptor instead. func (*ConsumeKeyPackagesResponse_KeyPackage) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{6, 0} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{7, 0} } func (x *ConsumeKeyPackagesResponse_KeyPackage) GetKeyPackageTlsSerialized() []byte { @@ -710,7 +695,8 @@ type GetIdentityUpdatesResponse_NewInstallationUpdate struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstallationId string `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + InstallationId []byte `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + CredentialIdentity []byte `protobuf:"bytes,2,opt,name=credential_identity,json=credentialIdentity,proto3" json:"credential_identity,omitempty"` } func (x *GetIdentityUpdatesResponse_NewInstallationUpdate) Reset() { @@ -742,14 +728,21 @@ func (x *GetIdentityUpdatesResponse_NewInstallationUpdate) ProtoReflect() protor // Deprecated: Use GetIdentityUpdatesResponse_NewInstallationUpdate.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesResponse_NewInstallationUpdate) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9, 0} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{10, 0} } -func (x *GetIdentityUpdatesResponse_NewInstallationUpdate) GetInstallationId() string { +func (x *GetIdentityUpdatesResponse_NewInstallationUpdate) GetInstallationId() []byte { if x != nil { return x.InstallationId } - return "" + return nil +} + +func (x *GetIdentityUpdatesResponse_NewInstallationUpdate) GetCredentialIdentity() []byte { + if x != nil { + return x.CredentialIdentity + } + return nil } // An installation was revoked @@ -758,7 +751,7 @@ type GetIdentityUpdatesResponse_RevokedInstallationUpdate struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstallationId string `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + InstallationId []byte `protobuf:"bytes,1,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` } func (x *GetIdentityUpdatesResponse_RevokedInstallationUpdate) Reset() { @@ -790,14 +783,14 @@ func (x *GetIdentityUpdatesResponse_RevokedInstallationUpdate) ProtoReflect() pr // Deprecated: Use GetIdentityUpdatesResponse_RevokedInstallationUpdate.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesResponse_RevokedInstallationUpdate) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9, 1} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{10, 1} } -func (x *GetIdentityUpdatesResponse_RevokedInstallationUpdate) GetInstallationId() string { +func (x *GetIdentityUpdatesResponse_RevokedInstallationUpdate) GetInstallationId() []byte { if x != nil { return x.InstallationId } - return "" + return nil } // A wrapper for any update to the wallet @@ -808,7 +801,6 @@ type GetIdentityUpdatesResponse_Update struct { TimestampNs uint64 `protobuf:"varint,1,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` // Types that are assignable to Kind: - // // *GetIdentityUpdatesResponse_Update_NewInstallation // *GetIdentityUpdatesResponse_Update_RevokedInstallation Kind isGetIdentityUpdatesResponse_Update_Kind `protobuf_oneof:"kind"` @@ -843,7 +835,7 @@ func (x *GetIdentityUpdatesResponse_Update) ProtoReflect() protoreflect.Message // Deprecated: Use GetIdentityUpdatesResponse_Update.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesResponse_Update) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9, 2} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{10, 2} } func (x *GetIdentityUpdatesResponse_Update) GetTimestampNs() uint64 { @@ -930,7 +922,7 @@ func (x *GetIdentityUpdatesResponse_WalletUpdates) ProtoReflect() protoreflect.M // Deprecated: Use GetIdentityUpdatesResponse_WalletUpdates.ProtoReflect.Descriptor instead. func (*GetIdentityUpdatesResponse_WalletUpdates) Descriptor() ([]byte, []int) { - return file_message_api_v3_mls_proto_rawDescGZIP(), []int{9, 3} + return file_message_api_v3_mls_proto_rawDescGZIP(), []int{10, 3} } func (x *GetIdentityUpdatesResponse_WalletUpdates) GetUpdates() []*GetIdentityUpdatesResponse_Update { @@ -974,186 +966,186 @@ var file_message_api_v3_mls_proto_rawDesc = []byte{ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x94, 0x01, 0x0a, 0x15, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x52, 0x0a, 0x0f, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, - 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x76, - 0x0a, 0x1b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, - 0x10, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, - 0x69, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x69, 0x67, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x47, 0x0a, 0x1c, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, - 0xf4, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x61, 0x0a, 0x0c, - 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, + 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4f, + 0x0a, 0x10, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, + 0x7b, 0x0a, 0x1b, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5c, + 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, + 0x72, 0x74, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x22, 0x47, 0x0a, 0x1c, + 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x0f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x64, 0x0a, 0x18, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x1a, - 0x75, 0x0a, 0x10, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x12, 0x3b, 0x0a, 0x1a, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, - 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x4c, 0x61, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x46, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, - 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0xc6, - 0x01, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, - 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, - 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, - 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, - 0x0b, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x49, 0x0a, 0x0a, - 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x6b, 0x65, - 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, - 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, - 0x6b, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x4b, - 0x0a, 0x10, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, - 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x6a, 0x0a, 0x19, 0x47, - 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x73, 0x22, 0x8a, 0x05, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, + 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x4b, 0x65, + 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x0b, + 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x46, 0x0a, 0x19, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0c, 0x52, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x1a, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, + 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x1a, 0x49, 0x0a, 0x0a, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, + 0x3b, 0x0a, 0x1a, 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x74, + 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x17, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x54, + 0x6c, 0x73, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0x91, 0x01, 0x0a, + 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x10, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, + 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x22, 0x6a, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, + 0x10, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x4e, 0x73, 0x22, 0xbb, 0x05, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x07, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, + 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x61, + 0x6c, 0x6c, 0x65, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x07, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, + 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x12, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x1a, 0x44, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0xa7, 0x02, + 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x12, 0x72, 0x0a, 0x10, 0x6e, + 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x57, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, - 0x40, 0x0a, 0x15, 0x4e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x1a, 0x44, 0x0a, 0x19, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, - 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0xa7, 0x02, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x12, 0x72, 0x0a, 0x10, 0x6e, 0x65, 0x77, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x45, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, - 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x4e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x7e, 0x0a, 0x14, 0x72, 0x65, 0x76, - 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, - 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, - 0x64, 0x1a, 0x61, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x32, 0x92, 0x08, 0x0a, 0x06, 0x4d, 0x6c, 0x73, 0x41, 0x70, 0x69, 0x12, - 0x7d, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x12, 0x2a, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, - 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x2d, 0x74, 0x6f, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x7f, - 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, - 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x57, - 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, - 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x2d, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, - 0xa9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x78, 0x6d, 0x74, - 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, - 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x2d, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x11, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x12, 0x2d, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, - 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, - 0x22, 0x1f, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x70, - 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x6b, 0x65, 0x79, 0x2d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, - 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x6d, - 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x6d, - 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, - 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, - 0x33, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x2d, 0x6b, 0x65, 0x79, 0x2d, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x88, 0x01, 0x0a, 0x12, 0x52, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x6e, 0x73, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, + 0x6e, 0x65, 0x77, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x7e, 0x0a, 0x14, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, + 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x13, 0x72, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x1a, 0x61, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x78, 0x6d, 0x74, 0x70, + 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x32, 0x92, 0x08, 0x0a, 0x06, 0x4d, + 0x6c, 0x73, 0x41, 0x70, 0x69, 0x12, 0x7d, 0x0a, 0x0e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, + 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x2d, 0x74, 0x6f, 0x2d, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x7f, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x57, + 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x50, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x27, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, + 0x33, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x2d, 0x77, 0x65, 0x6c, 0x63, 0x6f, 0x6d, + 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa9, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, + 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, - 0x22, 0x1f, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, - 0x76, 0x6f, 0x6b, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x6d, - 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x6d, - 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, - 0x33, 0x2f, 0x67, 0x65, 0x74, 0x2d, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x2d, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x42, 0x5d, 0x0a, 0x1d, 0x6f, 0x72, 0x67, - 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x6d, 0x74, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x33, 0x92, 0x41, 0x0f, 0x12, 0x0d, 0x0a, 0x06, 0x4d, 0x6c, 0x73, - 0x41, 0x70, 0x69, 0x32, 0x03, 0x31, 0x2e, 0x30, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1a, 0x31, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, + 0x72, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, + 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x70, + 0x6c, 0x6f, 0x61, 0x64, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2f, 0x76, 0x33, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x6b, 0x65, 0x79, 0x2d, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x43, + 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, + 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x4b, + 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x2d, + 0x6b, 0x65, 0x79, 0x2d, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, + 0x88, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x2f, 0x76, 0x33, 0x2f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x2d, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x01, 0x2a, 0x12, 0xa2, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x12, 0x2e, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x5f, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x65, 0x74, 0x2d, 0x69, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x42, + 0x5d, 0x0a, 0x1d, 0x6f, 0x72, 0x67, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x33, + 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x6d, 0x74, + 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x33, 0x92, 0x41, 0x0f, 0x12, + 0x0d, 0x0a, 0x06, 0x4d, 0x6c, 0x73, 0x41, 0x70, 0x69, 0x32, 0x03, 0x31, 0x2e, 0x30, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1172,16 +1164,16 @@ var file_message_api_v3_mls_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_message_api_v3_mls_proto_goTypes = []interface{}{ (*PublishToGroupRequest)(nil), // 0: xmtp.message_api.v3.PublishToGroupRequest (*PublishWelcomesRequest)(nil), // 1: xmtp.message_api.v3.PublishWelcomesRequest - (*RegisterInstallationRequest)(nil), // 2: xmtp.message_api.v3.RegisterInstallationRequest - (*RegisterInstallationResponse)(nil), // 3: xmtp.message_api.v3.RegisterInstallationResponse - (*UploadKeyPackagesRequest)(nil), // 4: xmtp.message_api.v3.UploadKeyPackagesRequest - (*ConsumeKeyPackagesRequest)(nil), // 5: xmtp.message_api.v3.ConsumeKeyPackagesRequest - (*ConsumeKeyPackagesResponse)(nil), // 6: xmtp.message_api.v3.ConsumeKeyPackagesResponse - (*RevokeInstallationRequest)(nil), // 7: xmtp.message_api.v3.RevokeInstallationRequest - (*GetIdentityUpdatesRequest)(nil), // 8: xmtp.message_api.v3.GetIdentityUpdatesRequest - (*GetIdentityUpdatesResponse)(nil), // 9: xmtp.message_api.v3.GetIdentityUpdatesResponse - (*PublishWelcomesRequest_WelcomeMessageRequest)(nil), // 10: xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest - (*UploadKeyPackagesRequest_KeyPackageUpload)(nil), // 11: xmtp.message_api.v3.UploadKeyPackagesRequest.KeyPackageUpload + (*KeyPackageUpload)(nil), // 2: xmtp.message_api.v3.KeyPackageUpload + (*RegisterInstallationRequest)(nil), // 3: xmtp.message_api.v3.RegisterInstallationRequest + (*RegisterInstallationResponse)(nil), // 4: xmtp.message_api.v3.RegisterInstallationResponse + (*UploadKeyPackagesRequest)(nil), // 5: xmtp.message_api.v3.UploadKeyPackagesRequest + (*ConsumeKeyPackagesRequest)(nil), // 6: xmtp.message_api.v3.ConsumeKeyPackagesRequest + (*ConsumeKeyPackagesResponse)(nil), // 7: xmtp.message_api.v3.ConsumeKeyPackagesResponse + (*RevokeInstallationRequest)(nil), // 8: xmtp.message_api.v3.RevokeInstallationRequest + (*GetIdentityUpdatesRequest)(nil), // 9: xmtp.message_api.v3.GetIdentityUpdatesRequest + (*GetIdentityUpdatesResponse)(nil), // 10: xmtp.message_api.v3.GetIdentityUpdatesResponse + (*PublishWelcomesRequest_WelcomeMessageRequest)(nil), // 11: xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest (*ConsumeKeyPackagesResponse_KeyPackage)(nil), // 12: xmtp.message_api.v3.ConsumeKeyPackagesResponse.KeyPackage (*GetIdentityUpdatesResponse_NewInstallationUpdate)(nil), // 13: xmtp.message_api.v3.GetIdentityUpdatesResponse.NewInstallationUpdate (*GetIdentityUpdatesResponse_RevokedInstallationUpdate)(nil), // 14: xmtp.message_api.v3.GetIdentityUpdatesResponse.RevokedInstallationUpdate @@ -1194,34 +1186,35 @@ var file_message_api_v3_mls_proto_goTypes = []interface{}{ } var file_message_api_v3_mls_proto_depIdxs = []int32{ 17, // 0: xmtp.message_api.v3.PublishToGroupRequest.messages:type_name -> xmtp.mls.message_contents.GroupMessage - 10, // 1: xmtp.message_api.v3.PublishWelcomesRequest.welcome_messages:type_name -> xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest - 11, // 2: xmtp.message_api.v3.UploadKeyPackagesRequest.key_packages:type_name -> xmtp.message_api.v3.UploadKeyPackagesRequest.KeyPackageUpload - 12, // 3: xmtp.message_api.v3.ConsumeKeyPackagesResponse.key_packages:type_name -> xmtp.message_api.v3.ConsumeKeyPackagesResponse.KeyPackage - 18, // 4: xmtp.message_api.v3.RevokeInstallationRequest.wallet_signature:type_name -> xmtp.message_contents.Signature - 16, // 5: xmtp.message_api.v3.GetIdentityUpdatesResponse.updates:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.WalletUpdates - 19, // 6: xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest.welcome_message:type_name -> xmtp.mls.message_contents.WelcomeMessage - 13, // 7: xmtp.message_api.v3.GetIdentityUpdatesResponse.Update.new_installation:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.NewInstallationUpdate - 14, // 8: xmtp.message_api.v3.GetIdentityUpdatesResponse.Update.revoked_installation:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.RevokedInstallationUpdate - 15, // 9: xmtp.message_api.v3.GetIdentityUpdatesResponse.WalletUpdates.updates:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.Update - 0, // 10: xmtp.message_api.v3.MlsApi.PublishToGroup:input_type -> xmtp.message_api.v3.PublishToGroupRequest - 1, // 11: xmtp.message_api.v3.MlsApi.PublishWelcomes:input_type -> xmtp.message_api.v3.PublishWelcomesRequest - 2, // 12: xmtp.message_api.v3.MlsApi.RegisterInstallation:input_type -> xmtp.message_api.v3.RegisterInstallationRequest - 4, // 13: xmtp.message_api.v3.MlsApi.UploadKeyPackages:input_type -> xmtp.message_api.v3.UploadKeyPackagesRequest - 5, // 14: xmtp.message_api.v3.MlsApi.ConsumeKeyPackages:input_type -> xmtp.message_api.v3.ConsumeKeyPackagesRequest - 7, // 15: xmtp.message_api.v3.MlsApi.RevokeInstallation:input_type -> xmtp.message_api.v3.RevokeInstallationRequest - 8, // 16: xmtp.message_api.v3.MlsApi.GetIdentityUpdates:input_type -> xmtp.message_api.v3.GetIdentityUpdatesRequest - 20, // 17: xmtp.message_api.v3.MlsApi.PublishToGroup:output_type -> google.protobuf.Empty - 20, // 18: xmtp.message_api.v3.MlsApi.PublishWelcomes:output_type -> google.protobuf.Empty - 3, // 19: xmtp.message_api.v3.MlsApi.RegisterInstallation:output_type -> xmtp.message_api.v3.RegisterInstallationResponse - 20, // 20: xmtp.message_api.v3.MlsApi.UploadKeyPackages:output_type -> google.protobuf.Empty - 6, // 21: xmtp.message_api.v3.MlsApi.ConsumeKeyPackages:output_type -> xmtp.message_api.v3.ConsumeKeyPackagesResponse - 20, // 22: xmtp.message_api.v3.MlsApi.RevokeInstallation:output_type -> google.protobuf.Empty - 9, // 23: xmtp.message_api.v3.MlsApi.GetIdentityUpdates:output_type -> xmtp.message_api.v3.GetIdentityUpdatesResponse - 17, // [17:24] is the sub-list for method output_type - 10, // [10:17] 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 + 11, // 1: xmtp.message_api.v3.PublishWelcomesRequest.welcome_messages:type_name -> xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest + 2, // 2: xmtp.message_api.v3.RegisterInstallationRequest.last_resort_key_package:type_name -> xmtp.message_api.v3.KeyPackageUpload + 2, // 3: xmtp.message_api.v3.UploadKeyPackagesRequest.key_packages:type_name -> xmtp.message_api.v3.KeyPackageUpload + 12, // 4: xmtp.message_api.v3.ConsumeKeyPackagesResponse.key_packages:type_name -> xmtp.message_api.v3.ConsumeKeyPackagesResponse.KeyPackage + 18, // 5: xmtp.message_api.v3.RevokeInstallationRequest.wallet_signature:type_name -> xmtp.message_contents.Signature + 16, // 6: xmtp.message_api.v3.GetIdentityUpdatesResponse.updates:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.WalletUpdates + 19, // 7: xmtp.message_api.v3.PublishWelcomesRequest.WelcomeMessageRequest.welcome_message:type_name -> xmtp.mls.message_contents.WelcomeMessage + 13, // 8: xmtp.message_api.v3.GetIdentityUpdatesResponse.Update.new_installation:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.NewInstallationUpdate + 14, // 9: xmtp.message_api.v3.GetIdentityUpdatesResponse.Update.revoked_installation:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.RevokedInstallationUpdate + 15, // 10: xmtp.message_api.v3.GetIdentityUpdatesResponse.WalletUpdates.updates:type_name -> xmtp.message_api.v3.GetIdentityUpdatesResponse.Update + 0, // 11: xmtp.message_api.v3.MlsApi.PublishToGroup:input_type -> xmtp.message_api.v3.PublishToGroupRequest + 1, // 12: xmtp.message_api.v3.MlsApi.PublishWelcomes:input_type -> xmtp.message_api.v3.PublishWelcomesRequest + 3, // 13: xmtp.message_api.v3.MlsApi.RegisterInstallation:input_type -> xmtp.message_api.v3.RegisterInstallationRequest + 5, // 14: xmtp.message_api.v3.MlsApi.UploadKeyPackages:input_type -> xmtp.message_api.v3.UploadKeyPackagesRequest + 6, // 15: xmtp.message_api.v3.MlsApi.ConsumeKeyPackages:input_type -> xmtp.message_api.v3.ConsumeKeyPackagesRequest + 8, // 16: xmtp.message_api.v3.MlsApi.RevokeInstallation:input_type -> xmtp.message_api.v3.RevokeInstallationRequest + 9, // 17: xmtp.message_api.v3.MlsApi.GetIdentityUpdates:input_type -> xmtp.message_api.v3.GetIdentityUpdatesRequest + 20, // 18: xmtp.message_api.v3.MlsApi.PublishToGroup:output_type -> google.protobuf.Empty + 20, // 19: xmtp.message_api.v3.MlsApi.PublishWelcomes:output_type -> google.protobuf.Empty + 4, // 20: xmtp.message_api.v3.MlsApi.RegisterInstallation:output_type -> xmtp.message_api.v3.RegisterInstallationResponse + 20, // 21: xmtp.message_api.v3.MlsApi.UploadKeyPackages:output_type -> google.protobuf.Empty + 7, // 22: xmtp.message_api.v3.MlsApi.ConsumeKeyPackages:output_type -> xmtp.message_api.v3.ConsumeKeyPackagesResponse + 20, // 23: xmtp.message_api.v3.MlsApi.RevokeInstallation:output_type -> google.protobuf.Empty + 10, // 24: xmtp.message_api.v3.MlsApi.GetIdentityUpdates:output_type -> xmtp.message_api.v3.GetIdentityUpdatesResponse + 18, // [18:25] is the sub-list for method output_type + 11, // [11:18] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_message_api_v3_mls_proto_init() } @@ -1255,7 +1248,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterInstallationRequest); i { + switch v := v.(*KeyPackageUpload); i { case 0: return &v.state case 1: @@ -1267,7 +1260,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegisterInstallationResponse); i { + switch v := v.(*RegisterInstallationRequest); i { case 0: return &v.state case 1: @@ -1279,7 +1272,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadKeyPackagesRequest); i { + switch v := v.(*RegisterInstallationResponse); i { case 0: return &v.state case 1: @@ -1291,7 +1284,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConsumeKeyPackagesRequest); i { + switch v := v.(*UploadKeyPackagesRequest); i { case 0: return &v.state case 1: @@ -1303,7 +1296,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConsumeKeyPackagesResponse); i { + switch v := v.(*ConsumeKeyPackagesRequest); i { case 0: return &v.state case 1: @@ -1315,7 +1308,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RevokeInstallationRequest); i { + switch v := v.(*ConsumeKeyPackagesResponse); i { case 0: return &v.state case 1: @@ -1327,7 +1320,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIdentityUpdatesRequest); i { + switch v := v.(*RevokeInstallationRequest); i { case 0: return &v.state case 1: @@ -1339,7 +1332,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetIdentityUpdatesResponse); i { + switch v := v.(*GetIdentityUpdatesRequest); i { case 0: return &v.state case 1: @@ -1351,7 +1344,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublishWelcomesRequest_WelcomeMessageRequest); i { + switch v := v.(*GetIdentityUpdatesResponse); i { case 0: return &v.state case 1: @@ -1363,7 +1356,7 @@ func file_message_api_v3_mls_proto_init() { } } file_message_api_v3_mls_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UploadKeyPackagesRequest_KeyPackageUpload); i { + switch v := v.(*PublishWelcomesRequest_WelcomeMessageRequest); i { case 0: return &v.state case 1: diff --git a/go/message_api/v3/mls_grpc.pb.go b/go/message_api/v3/mls_grpc.pb.go index 293625c9..4c23f06f 100644 --- a/go/message_api/v3/mls_grpc.pb.go +++ b/go/message_api/v3/mls_grpc.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.3.0 -// - protoc v4.23.3 +// - protoc v3.21.12 // source: message_api/v3/mls.proto package v3 diff --git a/go/message_contents/ciphertext.pb.go b/go/message_contents/ciphertext.pb.go index d0a56673..9faff46c 100644 --- a/go/message_contents/ciphertext.pb.go +++ b/go/message_contents/ciphertext.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/ciphertext.proto package message_contents @@ -32,7 +32,6 @@ type Ciphertext struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Union: - // // *Ciphertext_Aes256GcmHkdfSha256 Union isCiphertext_Union `protobuf_oneof:"union"` } diff --git a/go/message_contents/composite.pb.go b/go/message_contents/composite.pb.go index 9c52b88a..4e76d57c 100644 --- a/go/message_contents/composite.pb.go +++ b/go/message_contents/composite.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/composite.proto package message_contents @@ -77,7 +77,6 @@ type Composite_Part struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Element: - // // *Composite_Part_Part // *Composite_Part_Composite Element isComposite_Part_Element `protobuf_oneof:"element"` diff --git a/go/message_contents/contact.pb.go b/go/message_contents/contact.pb.go index 7b9df860..2b363d71 100644 --- a/go/message_contents/contact.pb.go +++ b/go/message_contents/contact.pb.go @@ -7,7 +7,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/contact.proto package message_contents @@ -130,7 +130,6 @@ type ContactBundle struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *ContactBundle_V1 // *ContactBundle_V2 Version isContactBundle_Version `protobuf_oneof:"version"` diff --git a/go/message_contents/content.pb.go b/go/message_contents/content.pb.go index 17dde262..25455f53 100644 --- a/go/message_contents/content.pb.go +++ b/go/message_contents/content.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/content.proto package message_contents diff --git a/go/message_contents/conversation_reference.pb.go b/go/message_contents/conversation_reference.pb.go index 71bc6fad..5599bab9 100644 --- a/go/message_contents/conversation_reference.pb.go +++ b/go/message_contents/conversation_reference.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/conversation_reference.proto package message_contents diff --git a/go/message_contents/invitation.pb.go b/go/message_contents/invitation.pb.go index aea64918..f3a9caa1 100644 --- a/go/message_contents/invitation.pb.go +++ b/go/message_contents/invitation.pb.go @@ -5,7 +5,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/invitation.proto package message_contents @@ -39,7 +39,6 @@ type InvitationV1 struct { // message encryption scheme and keys for this conversation. // // Types that are assignable to Encryption: - // // *InvitationV1_Aes256GcmHkdfSha256 Encryption isInvitationV1_Encryption `protobuf_oneof:"encryption"` } @@ -250,7 +249,6 @@ type SealedInvitation struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *SealedInvitation_V1 Version isSealedInvitation_Version `protobuf_oneof:"version"` } diff --git a/go/message_contents/message.pb.go b/go/message_contents/message.pb.go index 5e213a37..2fcd9ac8 100644 --- a/go/message_contents/message.pb.go +++ b/go/message_contents/message.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/message.proto package message_contents @@ -269,7 +269,6 @@ type Message struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *Message_V1 // *Message_V2 Version isMessage_Version `protobuf_oneof:"version"` diff --git a/go/message_contents/private_key.pb.go b/go/message_contents/private_key.pb.go index e1066b6b..95c858d1 100644 --- a/go/message_contents/private_key.pb.go +++ b/go/message_contents/private_key.pb.go @@ -6,7 +6,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/private_key.proto package message_contents @@ -36,7 +36,6 @@ type SignedPrivateKey struct { // private key // // Types that are assignable to Union: - // // *SignedPrivateKey_Secp256K1_ Union isSignedPrivateKey_Union `protobuf_oneof:"union"` // public key for this private key @@ -182,7 +181,6 @@ type PrivateKey struct { // private key // // Types that are assignable to Union: - // // *PrivateKey_Secp256K1_ Union isPrivateKey_Union `protobuf_oneof:"union"` // public key for this private key @@ -323,7 +321,6 @@ type PrivateKeyBundle struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *PrivateKeyBundle_V1 // *PrivateKeyBundle_V2 Version isPrivateKeyBundle_Version `protobuf_oneof:"version"` @@ -467,7 +464,6 @@ type EncryptedPrivateKeyBundle struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *EncryptedPrivateKeyBundle_V1 Version isEncryptedPrivateKeyBundle_Version `protobuf_oneof:"version"` } diff --git a/go/message_contents/public_key.pb.go b/go/message_contents/public_key.pb.go index 4144db6f..09359e9f 100644 --- a/go/message_contents/public_key.pb.go +++ b/go/message_contents/public_key.pb.go @@ -4,7 +4,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/public_key.proto package message_contents @@ -32,7 +32,6 @@ type UnsignedPublicKey struct { CreatedNs uint64 `protobuf:"varint,1,opt,name=created_ns,json=createdNs,proto3" json:"created_ns,omitempty"` // Types that are assignable to Union: - // // *UnsignedPublicKey_Secp256K1Uncompressed_ Union isUnsignedPublicKey_Union `protobuf_oneof:"union"` } @@ -224,7 +223,6 @@ type PublicKey struct { Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Signature *Signature `protobuf:"bytes,2,opt,name=signature,proto3,oneof" json:"signature,omitempty"` // Types that are assignable to Union: - // // *PublicKey_Secp256K1Uncompressed_ Union isPublicKey_Union `protobuf_oneof:"union"` } diff --git a/go/message_contents/signature.pb.go b/go/message_contents/signature.pb.go index 8efe6cb5..715a2800 100644 --- a/go/message_contents/signature.pb.go +++ b/go/message_contents/signature.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: message_contents/signature.proto package message_contents @@ -30,7 +30,6 @@ type Signature struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Union: - // // *Signature_EcdsaCompact // *Signature_WalletEcdsaCompact Union isSignature_Union `protobuf_oneof:"union"` diff --git a/go/mls/message_contents/message.pb.go b/go/mls/message_contents/message.pb.go index 3d09ef5a..71699fa2 100644 --- a/go/mls/message_contents/message.pb.go +++ b/go/mls/message_contents/message.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v4.23.3 +// protoc v3.21.12 // source: mls/message_contents/message.proto package message_contents @@ -29,7 +29,6 @@ type WelcomeMessage struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *WelcomeMessage_V1_ Version isWelcomeMessage_Version `protobuf_oneof:"version"` } @@ -97,7 +96,6 @@ type GroupMessage struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Version: - // // *GroupMessage_V1_ Version isGroupMessage_Version `protobuf_oneof:"version"` } diff --git a/go/mls_validation/v1/service.pb.go b/go/mls_validation/v1/service.pb.go new file mode 100644 index 00000000..f03d9f15 --- /dev/null +++ b/go/mls_validation/v1/service.pb.go @@ -0,0 +1,713 @@ +// Message API + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: mls_validation/v1/service.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Contains a batch of serialized Key Packages +type ValidateKeyPackagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyPackages []*ValidateKeyPackagesRequest_KeyPackage `protobuf:"bytes,1,rep,name=key_packages,json=keyPackages,proto3" json:"key_packages,omitempty"` +} + +func (x *ValidateKeyPackagesRequest) Reset() { + *x = ValidateKeyPackagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateKeyPackagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateKeyPackagesRequest) ProtoMessage() {} + +func (x *ValidateKeyPackagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateKeyPackagesRequest.ProtoReflect.Descriptor instead. +func (*ValidateKeyPackagesRequest) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{0} +} + +func (x *ValidateKeyPackagesRequest) GetKeyPackages() []*ValidateKeyPackagesRequest_KeyPackage { + if x != nil { + return x.KeyPackages + } + return nil +} + +// Response to ValidateKeyPackagesRequest +type ValidateKeyPackagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Responses []*ValidateKeyPackagesResponse_ValidationResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` +} + +func (x *ValidateKeyPackagesResponse) Reset() { + *x = ValidateKeyPackagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateKeyPackagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateKeyPackagesResponse) ProtoMessage() {} + +func (x *ValidateKeyPackagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateKeyPackagesResponse.ProtoReflect.Descriptor instead. +func (*ValidateKeyPackagesResponse) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{1} +} + +func (x *ValidateKeyPackagesResponse) GetResponses() []*ValidateKeyPackagesResponse_ValidationResponse { + if x != nil { + return x.Responses + } + return nil +} + +// Contains a batch of serialized Group Messages +type ValidateGroupMessagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupMessages []*ValidateGroupMessagesRequest_GroupMessage `protobuf:"bytes,1,rep,name=group_messages,json=groupMessages,proto3" json:"group_messages,omitempty"` +} + +func (x *ValidateGroupMessagesRequest) Reset() { + *x = ValidateGroupMessagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateGroupMessagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateGroupMessagesRequest) ProtoMessage() {} + +func (x *ValidateGroupMessagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateGroupMessagesRequest.ProtoReflect.Descriptor instead. +func (*ValidateGroupMessagesRequest) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{2} +} + +func (x *ValidateGroupMessagesRequest) GetGroupMessages() []*ValidateGroupMessagesRequest_GroupMessage { + if x != nil { + return x.GroupMessages + } + return nil +} + +// Response to ValidateGroupMessagesRequest +type ValidateGroupMessagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Responses []*ValidateGroupMessagesResponse_ValidationResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` +} + +func (x *ValidateGroupMessagesResponse) Reset() { + *x = ValidateGroupMessagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateGroupMessagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateGroupMessagesResponse) ProtoMessage() {} + +func (x *ValidateGroupMessagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateGroupMessagesResponse.ProtoReflect.Descriptor instead. +func (*ValidateGroupMessagesResponse) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{3} +} + +func (x *ValidateGroupMessagesResponse) GetResponses() []*ValidateGroupMessagesResponse_ValidationResponse { + if x != nil { + return x.Responses + } + return nil +} + +// Wrapper for each key package +type ValidateKeyPackagesRequest_KeyPackage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyPackageBytesTlsSerialized []byte `protobuf:"bytes,1,opt,name=key_package_bytes_tls_serialized,json=keyPackageBytesTlsSerialized,proto3" json:"key_package_bytes_tls_serialized,omitempty"` +} + +func (x *ValidateKeyPackagesRequest_KeyPackage) Reset() { + *x = ValidateKeyPackagesRequest_KeyPackage{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateKeyPackagesRequest_KeyPackage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateKeyPackagesRequest_KeyPackage) ProtoMessage() {} + +func (x *ValidateKeyPackagesRequest_KeyPackage) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateKeyPackagesRequest_KeyPackage.ProtoReflect.Descriptor instead. +func (*ValidateKeyPackagesRequest_KeyPackage) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *ValidateKeyPackagesRequest_KeyPackage) GetKeyPackageBytesTlsSerialized() []byte { + if x != nil { + return x.KeyPackageBytesTlsSerialized + } + return nil +} + +// An individual response to one key package +type ValidateKeyPackagesResponse_ValidationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsOk bool `protobuf:"varint,1,opt,name=is_ok,json=isOk,proto3" json:"is_ok,omitempty"` + ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + InstallationId []byte `protobuf:"bytes,3,opt,name=installation_id,json=installationId,proto3" json:"installation_id,omitempty"` + WalletAddress string `protobuf:"bytes,4,opt,name=wallet_address,json=walletAddress,proto3" json:"wallet_address,omitempty"` + CredentialIdentityBytes []byte `protobuf:"bytes,5,opt,name=credential_identity_bytes,json=credentialIdentityBytes,proto3" json:"credential_identity_bytes,omitempty"` +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) Reset() { + *x = ValidateKeyPackagesResponse_ValidationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateKeyPackagesResponse_ValidationResponse) ProtoMessage() {} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateKeyPackagesResponse_ValidationResponse.ProtoReflect.Descriptor instead. +func (*ValidateKeyPackagesResponse_ValidationResponse) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) GetIsOk() bool { + if x != nil { + return x.IsOk + } + return false +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) GetInstallationId() []byte { + if x != nil { + return x.InstallationId + } + return nil +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) GetWalletAddress() string { + if x != nil { + return x.WalletAddress + } + return "" +} + +func (x *ValidateKeyPackagesResponse_ValidationResponse) GetCredentialIdentityBytes() []byte { + if x != nil { + return x.CredentialIdentityBytes + } + return nil +} + +// Wrapper for each message +type ValidateGroupMessagesRequest_GroupMessage struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + GroupMessageBytesTlsSerialized []byte `protobuf:"bytes,1,opt,name=group_message_bytes_tls_serialized,json=groupMessageBytesTlsSerialized,proto3" json:"group_message_bytes_tls_serialized,omitempty"` +} + +func (x *ValidateGroupMessagesRequest_GroupMessage) Reset() { + *x = ValidateGroupMessagesRequest_GroupMessage{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateGroupMessagesRequest_GroupMessage) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateGroupMessagesRequest_GroupMessage) ProtoMessage() {} + +func (x *ValidateGroupMessagesRequest_GroupMessage) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateGroupMessagesRequest_GroupMessage.ProtoReflect.Descriptor instead. +func (*ValidateGroupMessagesRequest_GroupMessage) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{2, 0} +} + +func (x *ValidateGroupMessagesRequest_GroupMessage) GetGroupMessageBytesTlsSerialized() []byte { + if x != nil { + return x.GroupMessageBytesTlsSerialized + } + return nil +} + +// An individual response to one message +type ValidateGroupMessagesResponse_ValidationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + IsOk bool `protobuf:"varint,1,opt,name=is_ok,json=isOk,proto3" json:"is_ok,omitempty"` + ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + GroupId string `protobuf:"bytes,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"` +} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) Reset() { + *x = ValidateGroupMessagesResponse_ValidationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_mls_validation_v1_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ValidateGroupMessagesResponse_ValidationResponse) ProtoMessage() {} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) ProtoReflect() protoreflect.Message { + mi := &file_mls_validation_v1_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ValidateGroupMessagesResponse_ValidationResponse.ProtoReflect.Descriptor instead. +func (*ValidateGroupMessagesResponse_ValidationResponse) Descriptor() ([]byte, []int) { + return file_mls_validation_v1_service_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) GetIsOk() bool { + if x != nil { + return x.IsOk + } + return false +} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *ValidateGroupMessagesResponse_ValidationResponse) GetGroupId() string { + if x != nil { + return x.GroupId + } + return "" +} + +var File_mls_validation_v1_service_proto protoreflect.FileDescriptor + +var file_mls_validation_v1_service_proto_rawDesc = []byte{ + 0x0a, 0x1f, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x16, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, + 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x22, 0xd4, 0x01, 0x0a, 0x1a, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x60, 0x0a, 0x0c, 0x6b, 0x65, 0x79, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, + 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x0b, 0x6b, + 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x54, 0x0a, 0x0a, 0x4b, 0x65, + 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x20, 0x6b, 0x65, 0x79, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6c, + 0x73, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x1c, 0x6b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x54, 0x6c, 0x73, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, + 0x22, 0xe0, 0x02, 0x0a, 0x1b, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x64, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x1a, 0xda, 0x01, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, + 0x05, 0x69, 0x73, 0x5f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, + 0x4f, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x17, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x79, + 0x74, 0x65, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x1c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x0e, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x78, + 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x1a, 0x5a, + 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4a, + 0x0a, 0x22, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x1e, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6c, 0x73, + 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x22, 0xf2, 0x01, 0x0a, 0x1d, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x66, 0x0a, 0x09, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x48, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x09, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x73, 0x1a, 0x69, 0x0a, 0x12, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x69, 0x73, + 0x5f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x6b, 0x12, + 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x32, + 0x9b, 0x02, 0x0a, 0x0d, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x70, + 0x69, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x78, 0x6d, 0x74, 0x70, + 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, + 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x78, 0x6d, 0x74, 0x70, 0x2e, 0x6d, 0x6c, 0x73, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2f, 0x5a, + 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x6d, 0x74, 0x70, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x33, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x6c, 0x73, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_mls_validation_v1_service_proto_rawDescOnce sync.Once + file_mls_validation_v1_service_proto_rawDescData = file_mls_validation_v1_service_proto_rawDesc +) + +func file_mls_validation_v1_service_proto_rawDescGZIP() []byte { + file_mls_validation_v1_service_proto_rawDescOnce.Do(func() { + file_mls_validation_v1_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_mls_validation_v1_service_proto_rawDescData) + }) + return file_mls_validation_v1_service_proto_rawDescData +} + +var file_mls_validation_v1_service_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_mls_validation_v1_service_proto_goTypes = []interface{}{ + (*ValidateKeyPackagesRequest)(nil), // 0: xmtp.mls_validation.v1.ValidateKeyPackagesRequest + (*ValidateKeyPackagesResponse)(nil), // 1: xmtp.mls_validation.v1.ValidateKeyPackagesResponse + (*ValidateGroupMessagesRequest)(nil), // 2: xmtp.mls_validation.v1.ValidateGroupMessagesRequest + (*ValidateGroupMessagesResponse)(nil), // 3: xmtp.mls_validation.v1.ValidateGroupMessagesResponse + (*ValidateKeyPackagesRequest_KeyPackage)(nil), // 4: xmtp.mls_validation.v1.ValidateKeyPackagesRequest.KeyPackage + (*ValidateKeyPackagesResponse_ValidationResponse)(nil), // 5: xmtp.mls_validation.v1.ValidateKeyPackagesResponse.ValidationResponse + (*ValidateGroupMessagesRequest_GroupMessage)(nil), // 6: xmtp.mls_validation.v1.ValidateGroupMessagesRequest.GroupMessage + (*ValidateGroupMessagesResponse_ValidationResponse)(nil), // 7: xmtp.mls_validation.v1.ValidateGroupMessagesResponse.ValidationResponse +} +var file_mls_validation_v1_service_proto_depIdxs = []int32{ + 4, // 0: xmtp.mls_validation.v1.ValidateKeyPackagesRequest.key_packages:type_name -> xmtp.mls_validation.v1.ValidateKeyPackagesRequest.KeyPackage + 5, // 1: xmtp.mls_validation.v1.ValidateKeyPackagesResponse.responses:type_name -> xmtp.mls_validation.v1.ValidateKeyPackagesResponse.ValidationResponse + 6, // 2: xmtp.mls_validation.v1.ValidateGroupMessagesRequest.group_messages:type_name -> xmtp.mls_validation.v1.ValidateGroupMessagesRequest.GroupMessage + 7, // 3: xmtp.mls_validation.v1.ValidateGroupMessagesResponse.responses:type_name -> xmtp.mls_validation.v1.ValidateGroupMessagesResponse.ValidationResponse + 0, // 4: xmtp.mls_validation.v1.ValidationApi.ValidateKeyPackages:input_type -> xmtp.mls_validation.v1.ValidateKeyPackagesRequest + 2, // 5: xmtp.mls_validation.v1.ValidationApi.ValidateGroupMessages:input_type -> xmtp.mls_validation.v1.ValidateGroupMessagesRequest + 1, // 6: xmtp.mls_validation.v1.ValidationApi.ValidateKeyPackages:output_type -> xmtp.mls_validation.v1.ValidateKeyPackagesResponse + 3, // 7: xmtp.mls_validation.v1.ValidationApi.ValidateGroupMessages:output_type -> xmtp.mls_validation.v1.ValidateGroupMessagesResponse + 6, // [6:8] is the sub-list for method output_type + 4, // [4:6] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_mls_validation_v1_service_proto_init() } +func file_mls_validation_v1_service_proto_init() { + if File_mls_validation_v1_service_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_mls_validation_v1_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateKeyPackagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateKeyPackagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateGroupMessagesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateGroupMessagesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateKeyPackagesRequest_KeyPackage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateKeyPackagesResponse_ValidationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateGroupMessagesRequest_GroupMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_mls_validation_v1_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ValidateGroupMessagesResponse_ValidationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_mls_validation_v1_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 8, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_mls_validation_v1_service_proto_goTypes, + DependencyIndexes: file_mls_validation_v1_service_proto_depIdxs, + MessageInfos: file_mls_validation_v1_service_proto_msgTypes, + }.Build() + File_mls_validation_v1_service_proto = out.File + file_mls_validation_v1_service_proto_rawDesc = nil + file_mls_validation_v1_service_proto_goTypes = nil + file_mls_validation_v1_service_proto_depIdxs = nil +} diff --git a/go/mls_validation/v1/service.pb.gw.go b/go/mls_validation/v1/service.pb.gw.go new file mode 100644 index 00000000..d90d3eb6 --- /dev/null +++ b/go/mls_validation/v1/service.pb.gw.go @@ -0,0 +1,256 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: mls_validation/v1/service.proto + +/* +Package v1 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package v1 + +import ( + "context" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = metadata.Join + +func request_ValidationApi_ValidateKeyPackages_0(ctx context.Context, marshaler runtime.Marshaler, client ValidationApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ValidateKeyPackagesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ValidateKeyPackages(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ValidationApi_ValidateKeyPackages_0(ctx context.Context, marshaler runtime.Marshaler, server ValidationApiServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ValidateKeyPackagesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ValidateKeyPackages(ctx, &protoReq) + return msg, metadata, err + +} + +func request_ValidationApi_ValidateGroupMessages_0(ctx context.Context, marshaler runtime.Marshaler, client ValidationApiClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ValidateGroupMessagesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ValidateGroupMessages(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ValidationApi_ValidateGroupMessages_0(ctx context.Context, marshaler runtime.Marshaler, server ValidationApiServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ValidateGroupMessagesRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ValidateGroupMessages(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterValidationApiHandlerServer registers the http handlers for service ValidationApi to "mux". +// UnaryRPC :call ValidationApiServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterValidationApiHandlerFromEndpoint instead. +func RegisterValidationApiHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ValidationApiServer) error { + + mux.Handle("POST", pattern_ValidationApi_ValidateKeyPackages_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/xmtp.mls_validation.v1.ValidationApi/ValidateKeyPackages", runtime.WithHTTPPathPattern("/xmtp.mls_validation.v1.ValidationApi/ValidateKeyPackages")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ValidationApi_ValidateKeyPackages_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ValidationApi_ValidateKeyPackages_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ValidationApi_ValidateGroupMessages_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/xmtp.mls_validation.v1.ValidationApi/ValidateGroupMessages", runtime.WithHTTPPathPattern("/xmtp.mls_validation.v1.ValidationApi/ValidateGroupMessages")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ValidationApi_ValidateGroupMessages_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ValidationApi_ValidateGroupMessages_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterValidationApiHandlerFromEndpoint is same as RegisterValidationApiHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterValidationApiHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.DialContext(ctx, endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterValidationApiHandler(ctx, mux, conn) +} + +// RegisterValidationApiHandler registers the http handlers for service ValidationApi to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterValidationApiHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterValidationApiHandlerClient(ctx, mux, NewValidationApiClient(conn)) +} + +// RegisterValidationApiHandlerClient registers the http handlers for service ValidationApi +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ValidationApiClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ValidationApiClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "ValidationApiClient" to call the correct interceptors. +func RegisterValidationApiHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ValidationApiClient) error { + + mux.Handle("POST", pattern_ValidationApi_ValidateKeyPackages_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/xmtp.mls_validation.v1.ValidationApi/ValidateKeyPackages", runtime.WithHTTPPathPattern("/xmtp.mls_validation.v1.ValidationApi/ValidateKeyPackages")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ValidationApi_ValidateKeyPackages_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ValidationApi_ValidateKeyPackages_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_ValidationApi_ValidateGroupMessages_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/xmtp.mls_validation.v1.ValidationApi/ValidateGroupMessages", runtime.WithHTTPPathPattern("/xmtp.mls_validation.v1.ValidationApi/ValidateGroupMessages")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ValidationApi_ValidateGroupMessages_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_ValidationApi_ValidateGroupMessages_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_ValidationApi_ValidateKeyPackages_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"xmtp.mls_validation.v1.ValidationApi", "ValidateKeyPackages"}, "")) + + pattern_ValidationApi_ValidateGroupMessages_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"xmtp.mls_validation.v1.ValidationApi", "ValidateGroupMessages"}, "")) +) + +var ( + forward_ValidationApi_ValidateKeyPackages_0 = runtime.ForwardResponseMessage + + forward_ValidationApi_ValidateGroupMessages_0 = runtime.ForwardResponseMessage +) diff --git a/go/mls_validation/v1/service_grpc.pb.go b/go/mls_validation/v1/service_grpc.pb.go new file mode 100644 index 00000000..1aa45f6a --- /dev/null +++ b/go/mls_validation/v1/service_grpc.pb.go @@ -0,0 +1,152 @@ +// Message API + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc v3.21.12 +// source: mls_validation/v1/service.proto + +package v1 + +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.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + ValidationApi_ValidateKeyPackages_FullMethodName = "/xmtp.mls_validation.v1.ValidationApi/ValidateKeyPackages" + ValidationApi_ValidateGroupMessages_FullMethodName = "/xmtp.mls_validation.v1.ValidationApi/ValidateGroupMessages" +) + +// ValidationApiClient is the client API for ValidationApi 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. +type ValidationApiClient interface { + // Validates and parses a batch of key packages and returns relevant details + ValidateKeyPackages(ctx context.Context, in *ValidateKeyPackagesRequest, opts ...grpc.CallOption) (*ValidateKeyPackagesResponse, error) + // Validates and parses a group message and returns relevant details + ValidateGroupMessages(ctx context.Context, in *ValidateGroupMessagesRequest, opts ...grpc.CallOption) (*ValidateGroupMessagesResponse, error) +} + +type validationApiClient struct { + cc grpc.ClientConnInterface +} + +func NewValidationApiClient(cc grpc.ClientConnInterface) ValidationApiClient { + return &validationApiClient{cc} +} + +func (c *validationApiClient) ValidateKeyPackages(ctx context.Context, in *ValidateKeyPackagesRequest, opts ...grpc.CallOption) (*ValidateKeyPackagesResponse, error) { + out := new(ValidateKeyPackagesResponse) + err := c.cc.Invoke(ctx, ValidationApi_ValidateKeyPackages_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *validationApiClient) ValidateGroupMessages(ctx context.Context, in *ValidateGroupMessagesRequest, opts ...grpc.CallOption) (*ValidateGroupMessagesResponse, error) { + out := new(ValidateGroupMessagesResponse) + err := c.cc.Invoke(ctx, ValidationApi_ValidateGroupMessages_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ValidationApiServer is the server API for ValidationApi service. +// All implementations must embed UnimplementedValidationApiServer +// for forward compatibility +type ValidationApiServer interface { + // Validates and parses a batch of key packages and returns relevant details + ValidateKeyPackages(context.Context, *ValidateKeyPackagesRequest) (*ValidateKeyPackagesResponse, error) + // Validates and parses a group message and returns relevant details + ValidateGroupMessages(context.Context, *ValidateGroupMessagesRequest) (*ValidateGroupMessagesResponse, error) + mustEmbedUnimplementedValidationApiServer() +} + +// UnimplementedValidationApiServer must be embedded to have forward compatible implementations. +type UnimplementedValidationApiServer struct { +} + +func (UnimplementedValidationApiServer) ValidateKeyPackages(context.Context, *ValidateKeyPackagesRequest) (*ValidateKeyPackagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidateKeyPackages not implemented") +} +func (UnimplementedValidationApiServer) ValidateGroupMessages(context.Context, *ValidateGroupMessagesRequest) (*ValidateGroupMessagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ValidateGroupMessages not implemented") +} +func (UnimplementedValidationApiServer) mustEmbedUnimplementedValidationApiServer() {} + +// UnsafeValidationApiServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ValidationApiServer will +// result in compilation errors. +type UnsafeValidationApiServer interface { + mustEmbedUnimplementedValidationApiServer() +} + +func RegisterValidationApiServer(s grpc.ServiceRegistrar, srv ValidationApiServer) { + s.RegisterService(&ValidationApi_ServiceDesc, srv) +} + +func _ValidationApi_ValidateKeyPackages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ValidateKeyPackagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ValidationApiServer).ValidateKeyPackages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ValidationApi_ValidateKeyPackages_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ValidationApiServer).ValidateKeyPackages(ctx, req.(*ValidateKeyPackagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ValidationApi_ValidateGroupMessages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ValidateGroupMessagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ValidationApiServer).ValidateGroupMessages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ValidationApi_ValidateGroupMessages_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ValidationApiServer).ValidateGroupMessages(ctx, req.(*ValidateGroupMessagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ValidationApi_ServiceDesc is the grpc.ServiceDesc for ValidationApi service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ValidationApi_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "xmtp.mls_validation.v1.ValidationApi", + HandlerType: (*ValidationApiServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ValidateKeyPackages", + Handler: _ValidationApi_ValidateKeyPackages_Handler, + }, + { + MethodName: "ValidateGroupMessages", + Handler: _ValidationApi_ValidateGroupMessages_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "mls_validation/v1/service.proto", +} diff --git a/proto/message_api/v3/mls.proto b/proto/message_api/v3/mls.proto index 30f6b50a..d958ab10 100644 --- a/proto/message_api/v3/mls.proto +++ b/proto/message_api/v3/mls.proto @@ -90,39 +90,37 @@ message PublishWelcomesRequest { // An individual welcome message message WelcomeMessageRequest { // The topic will be derived from this - string installation_id = 1; + bytes installation_id = 1; xmtp.mls.message_contents.WelcomeMessage welcome_message = 2; } repeated WelcomeMessageRequest welcome_messages = 1; } +// A wrapper around the Key Package bytes +message KeyPackageUpload { + // This would be a serialized MLS key package that the node would + // parse, validate, and then store. + + // The owner's wallet address would be extracted from the identity + // credential in the key package, and all signatures would be validated. + bytes key_package_tls_serialized = 1; +} + // Register a new installation message RegisterInstallationRequest { - bytes credential_bytes = 1; - bytes signing_key_public = 2; + // The Key Package contains all information needed to register an installation + KeyPackageUpload last_resort_key_package = 1; } -// +// The response to a RegisterInstallationRequest message RegisterInstallationResponse { - string installation_id = 1; + bytes installation_id = 1; } // Upload one or more key packages message UploadKeyPackagesRequest { // An individual key package upload request - message KeyPackageUpload { - // This would be a serialized MLS key package that the node would - // parse, validate, and then store. - - // The owner's wallet address would be extracted from the identity - // credential in the key package, and all signatures would be validated. - bytes key_package_tls_serialized = 1; - // The node will always treat the most recent last-resort key package as - // the active one, and will ignore all others. - bool is_last_resort = 2; - } - repeated KeyPackageUpload key_packages = 1; } @@ -131,7 +129,7 @@ message ConsumeKeyPackagesRequest { // The caller can provide an array of wallet addresses, and the API // will return one key package for each installation associated with each // wallet address - repeated string installation_ids = 1; + repeated bytes installation_ids = 1; } // The response to a ConsumeKeyPackagesRequest @@ -148,7 +146,7 @@ message ConsumeKeyPackagesResponse { // Revoke an installation message RevokeInstallationRequest { - string installation_id = 1; + bytes installation_id = 1; // All revocations must be validated with a wallet signature over the // installation_id being revoked (and some sort of standard prologue) xmtp.message_contents.Signature wallet_signature = 2; @@ -164,12 +162,13 @@ message GetIdentityUpdatesRequest { message GetIdentityUpdatesResponse { // A new installation ID was seen for the first time by the nodes message NewInstallationUpdate { - string installation_id = 1; + bytes installation_id = 1; + bytes credential_identity = 2; } // An installation was revoked message RevokedInstallationUpdate { - string installation_id = 1; + bytes installation_id = 1; } // A wrapper for any update to the wallet diff --git a/proto/mls/database/intents.proto b/proto/mls/database/intents.proto new file mode 100644 index 00000000..b50f4223 --- /dev/null +++ b/proto/mls/database/intents.proto @@ -0,0 +1,74 @@ +// V3 invite message structure + +syntax = "proto3"; + +package xmtp.mls.database; + +option go_package = "github.com/xmtp/proto/v3/go/mls/database"; +option java_package = "org.xmtp.proto.mls.database"; + +// The data required to publish a message +message SendMessageData { + // V1 of SendMessagePublishData + message V1 { + bytes payload_bytes = 1; + } + + oneof version { + V1 v1 = 1; + } +} +// Wrapper around a list af repeated EVM Account Addresses +message AccountAddresses { + repeated string account_addresses = 1; +} + +// Wrapper around a list of repeated Installation IDs +message InstallationIds { + repeated bytes installation_ids = 1; +} + +// One of an EVM account address or Installation ID +message AddressesOrInstallationIds { + oneof addresses_or_installation_ids { + AccountAddresses account_addresses = 1; + InstallationIds installation_ids = 2; + } +} + +// The data required to add members to a group +message AddMembersData { + // V1 of AddMembersPublishData + message V1 { + AddressesOrInstallationIds addresses_or_installation_ids = 1; + } + + oneof version { + V1 v1 = 1; + } +} + +// The data required to remove members from a group +message RemoveMembersData { + // V1 of RemoveMembersPublishData + message V1 { + AddressesOrInstallationIds addresses_or_installation_ids = 1; + } + + oneof version { + V1 v1 = 1; + } +} + +// Generic data-type for all post-commit actions +message PostCommitAction { + // SendWelcome message + message SendWelcomes { + repeated bytes installation_ids = 1; + bytes welcome_message = 2; + } + + oneof kind { + SendWelcomes send_welcomes = 1; + } +} diff --git a/proto/v3/message_contents/association.proto b/proto/mls/message_contents/association.proto similarity index 75% rename from proto/v3/message_contents/association.proto rename to proto/mls/message_contents/association.proto index 681c510c..a3e41eb0 100644 --- a/proto/v3/message_contents/association.proto +++ b/proto/mls/message_contents/association.proto @@ -1,10 +1,10 @@ -// Association types +// Associations and signatures syntax = "proto3"; -package xmtp.v3.message_contents; +package xmtp.mls.message_contents; -option go_package = "github.com/xmtp/proto/v3/go/v3/message_contents"; -option java_package = "org.xmtp.proto.v3.message.contents"; +option go_package = "github.com/xmtp/proto/v3/go/mls/message_contents"; +option java_package = "org.xmtp.proto.mls.message.contents"; // Allows for us to update the format of the association text without // incrementing the entire proto @@ -18,6 +18,7 @@ message Eip191Association { AssociationTextVersion association_text_version = 1; RecoverableEcdsaSignature signature = 2; string wallet_address = 3; + string iso8601_time = 4; } // RecoverableEcdsaSignature diff --git a/proto/mls/message_contents/content.proto b/proto/mls/message_contents/content.proto new file mode 100644 index 00000000..f6757b97 --- /dev/null +++ b/proto/mls/message_contents/content.proto @@ -0,0 +1,42 @@ +// Message content encoding structures +// Copied from V2 code so that we can eventually retire all V2 message content +syntax = "proto3"; + +package xmtp.mls.message_contents; + +option go_package = "github.com/xmtp/proto/v3/go/mls/message_contents"; +option java_package = "org.xmtp.proto.mls.message.contents"; + +// ContentTypeId is used to identify the type of content stored in a Message. +message ContentTypeId { + string authority_id = 1; // authority governing this content type + string type_id = 2; // type identifier + uint32 version_major = 3; // major version of the type + uint32 version_minor = 4; // minor version of the type +} + +// Recognized compression algorithms +// protolint:disable ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH +enum Compression { + COMPRESSION_DEFLATE = 0; + COMPRESSION_GZIP = 1; +} +// protolint:enable ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH + +// EncodedContent bundles the content with metadata identifying its type +// and parameters required for correct decoding and presentation of the content. +message EncodedContent { + // content type identifier used to match the payload with + // the correct decoding machinery + ContentTypeId type = 1; + // optional encoding parameters required to correctly decode the content + map parameters = 2; + // optional fallback description of the content that can be used in case + // the client cannot decode or render the content + optional string fallback = 3; + // optional compression; the value indicates algorithm used to + // compress the encoded content bytes + optional Compression compression = 5; + // encoded content itself + bytes content = 4; +} \ No newline at end of file diff --git a/proto/mls/message_contents/credential.proto b/proto/mls/message_contents/credential.proto new file mode 100644 index 00000000..b247fd7f --- /dev/null +++ b/proto/mls/message_contents/credential.proto @@ -0,0 +1,25 @@ +// Credentials and revocations +syntax = "proto3"; + +package xmtp.mls.message_contents; + +import "mls/message_contents/association.proto"; + +option go_package = "github.com/xmtp/proto/v3/go/mls/message_contents"; +option java_package = "org.xmtp.proto.mls.message.contents"; + +// A credential that can be used in MLS leaf nodes +message MlsCredential { + bytes installation_public_key = 1; + oneof association { + Eip191Association eip_191 = 2; + } +} + +// A declaration and proof that a credential is no longer valid +message CredentialRevocation { + bytes installation_public_key = 1; + oneof association { + Eip191Association eip_191 = 2; + } +} diff --git a/proto/mls/message_contents/transcript_messages.proto b/proto/mls/message_contents/transcript_messages.proto new file mode 100644 index 00000000..9a62e9ea --- /dev/null +++ b/proto/mls/message_contents/transcript_messages.proto @@ -0,0 +1,30 @@ +// Message content encoding structures +syntax = "proto3"; + +package xmtp.mls.message_contents; + +option go_package = "github.com/xmtp/proto/v3/go/mls/message_contents"; +option java_package = "org.xmtp.proto.mls.message.contents"; + +// A group member and affected installation IDs +message MembershipChange { + repeated bytes installation_ids = 1; + string account_address = 2; + string initiated_by_account_address = 3; +} + +// The group membership change proto +message GroupMembershipChanges { + // protolint:disable REPEATED_FIELD_NAMES_PLURALIZED + + // Members that have been added in the commit + repeated MembershipChange members_added = 1; + // Members that have been removed in the commit + repeated MembershipChange members_removed = 2; + // Installations that have been added in the commit, grouped by member + repeated MembershipChange installations_added = 3; + // Installations removed in the commit, grouped by member + repeated MembershipChange installations_removed = 4; + + // protolint:enable REPEATED_FIELD_NAMES_PLURALIZED +} \ No newline at end of file diff --git a/proto/mls_validation/v1/service.proto b/proto/mls_validation/v1/service.proto new file mode 100644 index 00000000..68e6bf6c --- /dev/null +++ b/proto/mls_validation/v1/service.proto @@ -0,0 +1,60 @@ +// Message API +syntax = "proto3"; +package xmtp.mls_validation.v1; + +option go_package = "github.com/xmtp/proto/v3/go/mls_validation/v1"; + +// RPCs for the new MLS API +service ValidationApi { + // Validates and parses a batch of key packages and returns relevant details + rpc ValidateKeyPackages(ValidateKeyPackagesRequest) returns (ValidateKeyPackagesResponse) {} + + // Validates and parses a group message and returns relevant details + rpc ValidateGroupMessages(ValidateGroupMessagesRequest) returns (ValidateGroupMessagesResponse) {} +} + +// Contains a batch of serialized Key Packages +message ValidateKeyPackagesRequest { + // Wrapper for each key package + message KeyPackage { + bytes key_package_bytes_tls_serialized = 1; + } + + repeated KeyPackage key_packages = 1; +} + +// Response to ValidateKeyPackagesRequest +message ValidateKeyPackagesResponse { + // An individual response to one key package + message ValidationResponse { + bool is_ok = 1; + string error_message = 2; + bytes installation_id = 3; + string wallet_address = 4; + bytes credential_identity_bytes = 5; + } + + repeated ValidationResponse responses = 1; +} + +// Contains a batch of serialized Group Messages +message ValidateGroupMessagesRequest { + // Wrapper for each message + message GroupMessage { + bytes group_message_bytes_tls_serialized = 1; + } + + repeated GroupMessage group_messages = 1; +} + +// Response to ValidateGroupMessagesRequest +message ValidateGroupMessagesResponse { + // An individual response to one message + message ValidationResponse { + bool is_ok = 1; + string error_message = 2; + string group_id = 3; + } + + repeated ValidationResponse responses = 1; +} diff --git a/proto/v3/message_contents/invite.proto b/proto/v3/message_contents/invite.proto deleted file mode 100644 index 4cbd2a69..00000000 --- a/proto/v3/message_contents/invite.proto +++ /dev/null @@ -1,37 +0,0 @@ -// V3 invite message structure -syntax = "proto3"; - -package xmtp.v3.message_contents; - -import "v3/message_contents/public_key.proto"; - -option go_package = "github.com/xmtp/proto/v3/go/v3/message_contents"; -option java_package = "org.xmtp.proto.v3.message.contents"; - -// InvitationV1 is the invitation message meant to be encrypted as -// ciphertext in InvitationEnvelopeV1 and decrypted by the recipient using the -// provided inviter `InstallationContactBundle` -message InvitationV1 { - // If the inviter contact bundle has the same wallet address as the current - // user, the invitee is the other wallet address in the conversation. If the - // inviter contact bundle has a different wallet address, the invitee wallet - // address MUST be the wallet address of the recipient of the invite. - string invitee_wallet_address = 1; - // TODO: Decide whether we need a Context field -} - -// InvitationEnvelopeV1 is the encrypted invitation message and the contact of -// the sender -message InvitationEnvelopeV1 { - // This contains the public key that will be used to decrypt the ciphertext - InstallationContactBundle inviter = 1; - // Corresponds to an InvitationV1 message - bytes ciphertext = 2; -} - -// Wrapper message type -message InvitationEnvelope { - oneof version { - InvitationEnvelopeV1 v1 = 1; - } -} diff --git a/proto/v3/message_contents/message.proto b/proto/v3/message_contents/message.proto deleted file mode 100644 index 3e51da6e..00000000 --- a/proto/v3/message_contents/message.proto +++ /dev/null @@ -1,61 +0,0 @@ -// Structure for messages in v3 -syntax = "proto3"; - -package xmtp.v3.message_contents; - -import "v3/message_contents/association.proto"; - -option go_package = "github.com/xmtp/proto/v3/go/v3/message_contents"; -option java_package = "org.xmtp.proto.v3.message.contents"; - -// Metadata that is encrypted via SealedSender and only visible to the recipient -// Currently we do not actually encrypt this, actual implementation of -// SealedSender will be added shortly. -message PadlockMessageSealedMetadata { - string sender_user_address = 1; - string sender_installation_id = 2; - string recipient_user_address = 3; - string recipient_installation_id = 4; - bool is_prekey_message = 5; -} - -// Plaintext header included with messages, visible to all -// Recipients can verify this header has not been tampered with. -// Servers are unable to verify if the header has been tampered with. -message PadlockMessageHeader { - uint64 sent_ns = 1; - bytes sealed_metadata = 2; // PadlockMessageSealedMetadata -} - -// The version used for the decrypted padlock message payload -enum PadlockMessagePayloadVersion { - PADLOCK_MESSAGE_PAYLOAD_VERSION_UNSPECIFIED = 0; - PADLOCK_MESSAGE_PAYLOAD_VERSION_ONE = 1; -} - -// Encrypted body included with messages, only visible to recipients -// When receiving a message: -// 1. Decrypt the sealed metadata in the header via SealedSender -// 2. Verify that you match the recipient_user_address and -// recipient_installation_id. Verify that the sender_installation_id matches -// the sender_user_address. -// 2. Find the relevant session using the sender_user_address and -// sender_installation_id in the unsealed metadata -// 3. Use the session to decrypt the payload -// 4. Verify that the header_signature in the decrypted payload was produced by -// signing the header_bytes with the ed25519 key matching the -// sender_installation_id -// 5. Verify that both the sender_user and recipient_user are partipants of the -// conversation referenced by convo_id -message PadlockMessagePayload { - PadlockMessagePayloadVersion message_version = 1; - EdDsaSignature header_signature = 2; // Signs PadlockMessageHeader - string convo_id = 3; - bytes content_bytes = 4; // EncodedContent -} - -// Combines the plaintext header with the encrypted payload -message PadlockMessageEnvelope { - bytes header_bytes = 1; // PadlockMessageHeader - bytes ciphertext = 2; // Encrypted PadlockMessagePayload -} diff --git a/proto/v3/message_contents/public_key.proto b/proto/v3/message_contents/public_key.proto deleted file mode 100644 index 523c0b08..00000000 --- a/proto/v3/message_contents/public_key.proto +++ /dev/null @@ -1,75 +0,0 @@ -// Structure for representing public keys of different types, -// including signatures used to authenticate the keys. -syntax = "proto3"; - -package xmtp.v3.message_contents; - -import "v3/message_contents/association.proto"; - -option go_package = "github.com/xmtp/proto/v3/go/v3/message_contents"; -option java_package = "org.xmtp.proto.v3.message.contents"; - -// An unsigned public key used by libxmtp -message VmacUnsignedPublicKey { - uint64 created_ns = 1; - - oneof union { - VodozemacCurve25519 curve25519 = 2; - } - - // A Vodozemac curve25519 key serialized via serde - // (https://github.com/matrix-org/vodozemac/blob/ - // 929bbaf325686435bdd0ed0d0cc45b0cbad3430d/src/types/curve25519.rs#L100) - message VodozemacCurve25519 { - bytes bytes = 1; - } -} - -// A key linked to an XMTP account (e.g. signed by a wallet) -// The purpose of the key is encoded in the signature -message VmacAccountLinkedKey { - VmacUnsignedPublicKey key = 1; - oneof association { - Eip191Association eip_191 = 2; - } -} - -// A key linked to an installation (e.g. signed by an installation identity key) -// The purpose of the key is encoded in the signature -message VmacInstallationLinkedKey { - VmacUnsignedPublicKey key = 1; -} - -// A bundle of one time keys uploaded by a client, to be used as -// input to (X)3DH exchanges with it. The server is expected to serve -// and delete one prekey to anyone who requests one. -// In our initial prototype we will not actually use one-time prekeys, -// defaulting to fallback keys. -message VmacOneTimeKeyTopupBundle { - VmacAccountLinkedKey identity_key = 1; - repeated VmacInstallationLinkedKey one_time_keys = 2; -} - -// A fallback key uploaded by a client, which replaces any existing -// fallback key. The server is expected to serve this prekey when -// all one-time prekeys have been exhausted. -// In our initial prototype we will always use the fallback key in place -// of any one-time prekeys. -message VmacFallbackKeyRotation { - VmacAccountLinkedKey identity_key = 1; - VmacInstallationLinkedKey fallback_key = 2; -} - -// A contact bundle served by the server to a requesting client -message VmacInstallationPublicKeyBundleV1 { - VmacAccountLinkedKey identity_key = 1; - VmacInstallationLinkedKey fallback_key = 2; -} - -// A wrapper for versions of the installation contact bundle to allow -// upgradeability -message InstallationContactBundle { - oneof version { - VmacInstallationPublicKeyBundleV1 v1 = 1; - } -}