libsignal-protocol-c  master
session_pre_key.h
1 #ifndef SESSION_PRE_KEY_H
2 #define SESSION_PRE_KEY_H
3 
4 #include <stdint.h>
5 #include <stddef.h>
6 #include "signal_protocol_types.h"
7 
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11 
12 #define PRE_KEY_MEDIUM_MAX_VALUE 0xFFFFFF
13 
14 /*------------------------------------------------------------------------*/
15 
16 int session_pre_key_create(session_pre_key **pre_key, uint32_t id, ec_key_pair *key_pair);
17 int session_pre_key_serialize(signal_buffer **buffer, const session_pre_key *pre_key);
18 int session_pre_key_deserialize(session_pre_key **pre_key, const uint8_t *data, size_t len, signal_context *global_context);
19 
20 uint32_t session_pre_key_get_id(const session_pre_key *pre_key);
21 ec_key_pair *session_pre_key_get_key_pair(const session_pre_key *pre_key);
22 
23 void session_pre_key_destroy(signal_type_base *type);
24 
25 /*------------------------------------------------------------------------*/
26 
27 int session_signed_pre_key_create(session_signed_pre_key **pre_key,
28  uint32_t id, uint64_t timestamp, ec_key_pair *key_pair,
29  const uint8_t *signature, size_t signature_len);
30 int session_signed_pre_key_serialize(signal_buffer **buffer, const session_signed_pre_key *pre_key);
31 int session_signed_pre_key_deserialize(session_signed_pre_key **pre_key, const uint8_t *data, size_t len, signal_context *global_context);
32 
33 uint32_t session_signed_pre_key_get_id(const session_signed_pre_key *pre_key);
34 uint64_t session_signed_pre_key_get_timestamp(const session_signed_pre_key *pre_key);
35 ec_key_pair *session_signed_pre_key_get_key_pair(const session_signed_pre_key *pre_key);
36 const uint8_t *session_signed_pre_key_get_signature(const session_signed_pre_key *pre_key);
37 size_t session_signed_pre_key_get_signature_len(const session_signed_pre_key *pre_key);
38 
39 void session_signed_pre_key_destroy(signal_type_base *type);
40 
41 /*------------------------------------------------------------------------*/
42 
43 int session_pre_key_bundle_create(session_pre_key_bundle **bundle,
44  uint32_t registration_id, int device_id, uint32_t pre_key_id,
45  ec_public_key *pre_key_public,
46  uint32_t signed_pre_key_id, ec_public_key *signed_pre_key_public,
47  const uint8_t *signed_pre_key_signature_data, size_t signed_pre_key_signature_len,
48  ec_public_key *identity_key);
49 
50 uint32_t session_pre_key_bundle_get_registration_id(const session_pre_key_bundle *bundle);
51 int session_pre_key_bundle_get_device_id(const session_pre_key_bundle *bundle);
52 uint32_t session_pre_key_bundle_get_pre_key_id(const session_pre_key_bundle *bundle);
53 ec_public_key *session_pre_key_bundle_get_pre_key(const session_pre_key_bundle *bundle);
54 uint32_t session_pre_key_bundle_get_signed_pre_key_id(const session_pre_key_bundle *bundle);
55 ec_public_key *session_pre_key_bundle_get_signed_pre_key(const session_pre_key_bundle *bundle);
56 signal_buffer *session_pre_key_bundle_get_signed_pre_key_signature(const session_pre_key_bundle *bundle);
57 ec_public_key *session_pre_key_bundle_get_identity_key(const session_pre_key_bundle *bundle);
58 
59 void session_pre_key_bundle_destroy(signal_type_base *type);
60 
61 #ifdef __cplusplus
62 }
63 #endif
64 
65 #endif /* SESSION_PRE_KEY_H */
Definition: curve.c:19
Definition: signal_protocol_internal.h:8
Definition: signal_protocol_internal.h:23
Definition: session_pre_key.c:26
Definition: signal_protocol_internal.h:18
Definition: session_pre_key.c:17
Definition: curve.c:31
Definition: session_pre_key.c:11