mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-22 16:07:30 +00:00
3999171377
1) At registration time, a client generates a random ID and transmits to the the server. 2) The server provides that registration ID to any client that requests a prekey. 3) Clients include that registration ID in any PreKeyWhisperMessage. 4) Clients include that registration ID in their sendMessage API call to the server. 5) The server verifies that the registration ID included in an API call is the same as the current registration ID for the destination device. Otherwise, it notifies the sender that their session is stale.
63 lines
1.7 KiB
Protocol Buffer
63 lines
1.7 KiB
Protocol Buffer
package textsecure;
|
|
|
|
option java_package = "org.whispersystems.textsecure.storage";
|
|
option java_outer_classname = "StorageProtos";
|
|
|
|
message SessionStructure {
|
|
message Chain {
|
|
optional bytes senderEphemeral = 1;
|
|
optional bytes senderEphemeralPrivate = 2;
|
|
|
|
message ChainKey {
|
|
optional uint32 index = 1;
|
|
optional bytes key = 2;
|
|
}
|
|
|
|
optional ChainKey chainKey = 3;
|
|
|
|
message MessageKey {
|
|
optional uint32 index = 1;
|
|
optional bytes cipherKey = 2;
|
|
optional bytes macKey = 3;
|
|
}
|
|
|
|
repeated MessageKey messageKeys = 4;
|
|
}
|
|
|
|
message PendingKeyExchange {
|
|
optional uint32 sequence = 1;
|
|
optional bytes localBaseKey = 2;
|
|
optional bytes localBaseKeyPrivate = 3;
|
|
optional bytes localEphemeralKey = 4;
|
|
optional bytes localEphemeralKeyPrivate = 5;
|
|
optional bytes localIdentityKey = 7;
|
|
optional bytes localIdentityKeyPrivate = 8;
|
|
}
|
|
|
|
message PendingPreKey {
|
|
optional uint32 preKeyId = 1;
|
|
optional bytes baseKey = 2;
|
|
}
|
|
|
|
optional uint32 sessionVersion = 1;
|
|
optional bytes localIdentityPublic = 2;
|
|
optional bytes remoteIdentityPublic = 3;
|
|
|
|
optional bytes rootKey = 4;
|
|
optional uint32 previousCounter = 5;
|
|
|
|
optional Chain senderChain = 6;
|
|
repeated Chain receiverChains = 7;
|
|
|
|
optional PendingKeyExchange pendingKeyExchange = 8;
|
|
optional PendingPreKey pendingPreKey = 9;
|
|
|
|
optional uint32 remoteRegistrationId = 10;
|
|
optional uint32 localRegistrationId = 11;
|
|
}
|
|
|
|
message PreKeyRecordStructure {
|
|
optional uint32 id = 1;
|
|
optional bytes publicKey = 2;
|
|
optional bytes privateKey = 3;
|
|
} |