status-go/protocol/encryption/protocol_message.proto

92 lines
1.8 KiB
Protocol Buffer
Raw Normal View History

syntax = "proto3";
option go_package = "github.com/protocol/encryption";
2019-07-17 22:25:42 +00:00
package encryption;
message SignedPreKey {
bytes signed_pre_key = 1;
uint32 version = 2;
2019-05-23 07:54:28 +00:00
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;
}
2021-09-21 15:47:04 +00:00
// Hash Ratchet Header
message HRHeader {
// community key ID
uint32 key_id = 1;
// Community message number for this key_id
uint32 seq_no = 2;
// Community ID
string group_id = 3;
}
// Direct message value
2021-09-21 15:47:04 +00:00
message EncryptedMessageProtocol {
X3DHHeader X3DH_header = 1;
2021-09-21 15:47:04 +00:00
DRHeader DR_header = 2;
DHHeader DH_header = 101;
2021-09-21 15:47:04 +00:00
HRHeader HR_header = 102;
// 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
2021-09-21 15:47:04 +00:00
// TODO map here is redundant in case of community messages
map<string,EncryptedMessageProtocol> encrypted_message = 101;
// Public chats, not encrypted
bytes public_message = 102;
}