syntax = "proto2"; package protocol; import "ControlChannel.proto"; message CwtchServerPacket { optional GroupMessage group_message = 1; optional FetchMessage fetch_message = 2; } extend protocol.ChannelResult { optional bytes server_nonce = 8200; // 32 random bytes } message FetchMessage { } message GroupMessage { required bytes ciphertext = 1; required bytes spamguard = 2; required bytes signature = 3; } // 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 signed_group_id = 4; required bytes previous_message_sig =5; // Used to prevent analysis on text length, length is 1024 - len(text) required bytes padding = 6; }