107 lines
2.5 KiB
Protocol Buffer
107 lines
2.5 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
//
|
|
// Copyright 2020 Signal Messenger, LLC.
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
package signal.proto.storage;
|
|
|
|
message SessionStructure {
|
|
message Chain {
|
|
bytes sender_ratchet_key = 1;
|
|
bytes sender_ratchet_key_private = 2;
|
|
|
|
message ChainKey {
|
|
uint32 index = 1;
|
|
bytes key = 2;
|
|
}
|
|
|
|
ChainKey chain_key = 3;
|
|
|
|
message MessageKey {
|
|
uint32 index = 1;
|
|
bytes cipher_key = 2;
|
|
bytes mac_key = 3;
|
|
bytes iv = 4;
|
|
}
|
|
|
|
repeated MessageKey message_keys = 4;
|
|
}
|
|
|
|
message PendingPreKey {
|
|
uint32 pre_key_id = 1;
|
|
int32 signed_pre_key_id = 3;
|
|
bytes base_key = 2;
|
|
}
|
|
|
|
uint32 session_version = 1;
|
|
bytes local_identity_public = 2;
|
|
bytes remote_identity_public = 3;
|
|
|
|
bytes root_key = 4;
|
|
uint32 previous_counter = 5;
|
|
|
|
Chain sender_chain = 6;
|
|
// The order is significant; keys at the end are "older" and will get trimmed.
|
|
repeated Chain receiver_chains = 7;
|
|
|
|
PendingPreKey pending_pre_key = 9;
|
|
|
|
uint32 remote_registration_id = 10;
|
|
uint32 local_registration_id = 11;
|
|
|
|
bool needs_refresh = 12;
|
|
bytes alice_base_key = 13;
|
|
}
|
|
|
|
message RecordStructure {
|
|
SessionStructure current_session = 1;
|
|
// The order is significant; sessions at the end are "older" and will get trimmed.
|
|
repeated SessionStructure previous_sessions = 2;
|
|
}
|
|
|
|
message PreKeyRecordStructure {
|
|
uint32 id = 1;
|
|
bytes public_key = 2;
|
|
bytes private_key = 3;
|
|
}
|
|
|
|
message SignedPreKeyRecordStructure {
|
|
uint32 id = 1;
|
|
bytes public_key = 2;
|
|
bytes private_key = 3;
|
|
bytes signature = 4;
|
|
fixed64 timestamp = 5;
|
|
}
|
|
|
|
message IdentityKeyPairStructure {
|
|
bytes public_key = 1;
|
|
bytes private_key = 2;
|
|
}
|
|
|
|
message SenderKeyStateStructure {
|
|
message SenderChainKey {
|
|
uint32 iteration = 1;
|
|
bytes seed = 2;
|
|
}
|
|
|
|
message SenderMessageKey {
|
|
uint32 iteration = 1;
|
|
bytes seed = 2;
|
|
}
|
|
|
|
message SenderSigningKey {
|
|
bytes public = 1;
|
|
bytes private = 2;
|
|
}
|
|
|
|
uint32 sender_key_id = 1;
|
|
SenderChainKey sender_chain_key = 2;
|
|
SenderSigningKey sender_signing_key = 3;
|
|
repeated SenderMessageKey sender_message_keys = 4;
|
|
}
|
|
|
|
message SenderKeyRecordStructure {
|
|
repeated SenderKeyStateStructure sender_key_states = 1;
|
|
}
|