From b0c42255e407cf43870580237d6d3a1d05fa0434 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Wed, 2 Apr 2014 12:17:29 -0700 Subject: [PATCH] Updated API Protocol (markdown) --- API-Protocol.md | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/API-Protocol.md b/API-Protocol.md index 20b5a84..e3c3b0a 100644 --- a/API-Protocol.md +++ b/API-Protocol.md @@ -296,18 +296,26 @@ struct { opaque iv[16]; opaque ciphertext[...]; // The IncomingPushMessageSignal opaque mac[10]; +} ``` The IncomingPushMessageSignal protocol buffer: ``` -message OutgoingMessageSignal { - optional uint32 type = 1; +message IncomingPushMessageSignal { + enum Type { + UNKNOWN = 0; + CIPHERTEXT = 1; + KEY_EXCHANGE = 2; + PREKEY_BUNDLE = 3; + PLAINTEXT = 4; + } + optional Type type = 1; optional string source = 2; + optional uint32 sourceDevice = 7; optional string relay = 3; - repeated string destinations = 4; optional uint64 timestamp = 5; - optional bytes message = 6; // Encrypted PushMessageContent (above) + optional bytes message = 6; // Contains an encrypted PushMessageContent } ``` @@ -317,15 +325,34 @@ Recall that a push message is transmitted as the following structure: ``` message PushMessageContent { - optional string body = 1; - message AttachmentPointer { - optional fixed64 id = 1; - optional string contentType = 2; - optional bytes key = 3; + optional fixed64 id = 1; + optional string contentType = 2; + optional bytes key = 3; } + message GroupContext { + enum Type { + UNKNOWN = 0; + UPDATE = 1; + DELIVER = 2; + QUIT = 3; + } + optional bytes id = 1; + optional Type type = 2; + optional string name = 3; + repeated string members = 4; + optional AttachmentPointer avatar = 5; + } + + enum Flags { + END_SESSION = 1; + } + + optional string body = 1; repeated AttachmentPointer attachments = 2; + optional GroupContext group = 3; + optional Flags flags = 4; } ```