syntax = "proto2"; package textsecure; option java_package = "org.whispersystems.libsignal.protocol"; option java_outer_classname = "SignalProtos"; message SignalMessage { optional bytes ratchetKey = 1; optional uint32 counter = 2; optional uint32 previousCounter = 3; optional bytes ciphertext = 4; } message PreKeySignalMessage { optional uint32 registrationId = 5; optional uint32 preKeyId = 1; optional uint32 signedPreKeyId = 6; optional bytes baseKey = 2; optional bytes identityKey = 3; optional bytes message = 4; // SignalMessage } message KeyExchangeMessage { optional uint32 id = 1; optional bytes baseKey = 2; optional bytes ratchetKey = 3; optional bytes identityKey = 4; optional bytes baseKeySignature = 5; } message SenderKeyMessage { optional uint32 id = 1; optional uint32 iteration = 2; optional bytes ciphertext = 3; } message SenderKeyDistributionMessage { optional uint32 id = 1; optional uint32 iteration = 2; optional bytes chainKey = 3; optional bytes signingKey = 4; } message DeviceConsistencyCodeMessage { optional uint32 generation = 1; optional bytes signature = 2; } message ClosedGroupCiphertextMessage { // @required optional bytes ciphertext = 1; // @required optional bytes senderPublicKey = 2; // @required optional uint32 keyIndex = 3; }