79 lines
1.5 KiB
Protocol Buffer
79 lines
1.5 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package encryption;
|
|
|
|
message SignedPreKey {
|
|
bytes signed_pre_key = 1;
|
|
uint32 version = 2;
|
|
uint32 protocol_version = 3;
|
|
}
|
|
|
|
// X3DH prekey bundle
|
|
message Bundle {
|
|
// Identity key
|
|
bytes identity = 1;
|
|
// Installation id
|
|
map<string,SignedPreKey> signed_pre_keys = 2;
|
|
// Prekey signature
|
|
bytes signature = 4;
|
|
|
|
// When the bundle was created locally
|
|
int64 timestamp = 5;
|
|
}
|
|
|
|
message BundleContainer {
|
|
reserved 3;
|
|
// X3DH prekey bundle
|
|
Bundle bundle = 1;
|
|
// Private signed prekey
|
|
bytes private_signed_pre_key = 2;
|
|
}
|
|
|
|
message DRHeader {
|
|
// Current ratchet public key
|
|
bytes key = 1;
|
|
// Number of the message in the sending chain
|
|
uint32 n = 2;
|
|
// Length of the previous sending chain
|
|
uint32 pn = 3;
|
|
// Bundle ID
|
|
bytes id = 4;
|
|
}
|
|
|
|
message DHHeader {
|
|
// Compressed ephemeral public key
|
|
bytes key = 1;
|
|
}
|
|
|
|
message X3DHHeader {
|
|
reserved 3;
|
|
// Ephemeral key used
|
|
bytes key = 1;
|
|
// Used bundle's signed prekey
|
|
bytes id = 4;
|
|
}
|
|
|
|
// Direct message value
|
|
message DirectMessageProtocol {
|
|
X3DHHeader X3DH_header = 1;
|
|
DRHeader DR_header = 2;
|
|
DHHeader DH_header = 101;
|
|
// Encrypted payload
|
|
bytes payload = 3;
|
|
}
|
|
|
|
// Top-level protocol message
|
|
message ProtocolMessage {
|
|
// The device id of the sender
|
|
string installation_id = 2;
|
|
|
|
// List of bundles
|
|
repeated Bundle bundles = 3;
|
|
|
|
// One to one message, encrypted, indexed by installation_id
|
|
map<string,DirectMessageProtocol> direct_message = 101;
|
|
|
|
// Public chats, not encrypted
|
|
bytes public_message = 102;
|
|
}
|