// From https://github.com/signalapp/libsignal-protocol-c/blob/master/protobuf/WhisperTextProtocol.proto syntax = "proto2"; package textsecure; 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; }