syntax = "proto2"; package protocol; import "ControlChannel.proto"; message CwtchServerPacket { optional GroupMessage group_message = 1; optional FetchMessage fetch_message = 2; repeated GroupMessage group_messages = 3; } extend protocol.ChannelResult { optional bytes server_nonce = 8200; // 32 random bytes } message FetchMessage { } message GroupMessage { required bytes ciphertext = 1; required bytes spamguard = 2; } // DecryptedGroupMessage is *never* sent in the clear on the wire // and is only ever sent when encrypted in the ciphertext parameter of // GroupMessage message DecryptedGroupMessage { required string onion = 1; required int32 timestamp = 2; required string text = 3; required bytes signature = 4; required bytes signed_group_id = 5; }