package textsecure; message DeviceInit { required bytes masterEphemeralPubKey = 1; required bytes identityKeyMessage = 2; // contains an IdentityKey } message IdentityKey { required bytes identityKey = 1; required string phoneNumber = 2; required string server = 3; required bool masterSupportsSms = 4; required uint32 provisioningCode = 5; } message DeviceControl { enum Type { UNKNOWN = 0; NEW_DEVICE_REGISTERED = 1; // Requries only newDeviceId SENT_MESSAGE = 2; // Requires only message } message MessageSent { required string otherNumber = 1; // The destination account (ie phone #), not device required uint64 timestamp = 2; required bytes message = 3; // PushMessageContent } required Type type = 1; optional uint32 newDeviceId = 2; optional MessageSent message = 3; }