libsignal-protocol-c  master
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
group_session_builder.h
1 #ifndef GROUP_SESSION_BUILDER_H
2 #define GROUP_SESSION_BUILDER_H
3 
4 #include "signal_protocol_types.h"
5 
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9 
10 /*
11  * Group session builder is responsible for setting up group sender key encrypted sessions.
12  *
13  * Once a session has been established, group_cipher can be used to
14  * encrypt/decrypt messages in that session.
15  * <p>
16  * The built sessions are unidirectional: they can be used either for sending
17  * or for receiving, but not both.
18  *
19  * Sessions are constructed per (groupId + senderId + deviceId) tuple. Remote logical users
20  * are identified by their senderId, and each logical recipientId can have multiple physical
21  * devices.
22  */
23 
37 int group_session_builder_create(group_session_builder **builder,
38  signal_protocol_store_context *store, signal_context *global_context);
39 
48 int group_session_builder_process_session(group_session_builder *builder,
49  const signal_protocol_sender_key_name *sender_key_name,
50  sender_key_distribution_message *distribution_message);
51 
60 int group_session_builder_create_session(group_session_builder *builder,
61  sender_key_distribution_message **distribution_message,
62  const signal_protocol_sender_key_name *sender_key_name);
63 
64 void group_session_builder_free(group_session_builder *builder);
65 
66 #ifdef __cplusplus
67 }
68 #endif
69 
70 #endif /* GROUP_SESSION_BUILDER_H */
Definition: signal_protocol.c:25
Definition: signal_protocol_types.h:48
Definition: signal_protocol_internal.h:23
Definition: group_session_builder.c:12
Definition: protocol.c:53