1 #ifndef SIGNAL_PROTOCOL_H 2 #define SIGNAL_PROTOCOL_H 10 #include "session_record.h" 11 #include "session_pre_key.h" 12 #include "sender_key_record.h" 13 #include "signal_protocol_types.h" 22 #define SG_ERR_NOMEM -12 23 #define SG_ERR_INVAL -22 26 #define SG_ERR_UNKNOWN -1000 27 #define SG_ERR_DUPLICATE_MESSAGE -1001 28 #define SG_ERR_INVALID_KEY -1002 29 #define SG_ERR_INVALID_KEY_ID -1003 30 #define SG_ERR_INVALID_MAC -1004 31 #define SG_ERR_INVALID_MESSAGE -1005 32 #define SG_ERR_INVALID_VERSION -1006 33 #define SG_ERR_LEGACY_MESSAGE -1007 34 #define SG_ERR_NO_SESSION -1008 35 #define SG_ERR_STALE_KEY_EXCHANGE -1009 36 #define SG_ERR_UNTRUSTED_IDENTITY -1010 37 #define SG_ERR_VRF_SIG_VERIF_FAILED -1011 38 #define SG_ERR_INVALID_PROTO_BUF -1100 39 #define SG_ERR_FP_VERSION_MISMATCH -1200 40 #define SG_ERR_FP_IDENT_MISMATCH -1201 48 #define SG_ERR_MINIMUM -9999 51 #define SG_LOG_ERROR 0 52 #define SG_LOG_WARNING 1 53 #define SG_LOG_NOTICE 2 55 #define SG_LOG_DEBUG 4 58 #define SG_CIPHER_AES_CTR_NOPADDING 1 59 #define SG_CIPHER_AES_CBC_PKCS5 2 66 #define SIGNAL_REF(instance) do { \ 67 signal_type_ref((signal_type_base *)instance); \ 68 fprintf(stderr, "REF: " #instance " = %d\n", signal_type_ref_count((signal_type_base *)instance)); \ 70 #define SIGNAL_UNREF(instance) do { \ 71 fprintf(stderr, "UNREF: " #instance " = %d\n", signal_type_ref_count((signal_type_base *)instance)); \ 72 signal_type_unref((signal_type_base *)instance); \ 76 #define SIGNAL_REF(instance) signal_type_ref((signal_type_base *)instance) 77 #define SIGNAL_UNREF(instance) do { signal_type_unref((signal_type_base *)instance); instance = 0; } while(0) 95 signal_buffer *signal_buffer_create(
const uint8_t *data,
size_t len);
143 const uint8_t *signal_buffer_const_data(
const signal_buffer *buffer);
384 const uint8_t *key,
size_t key_len,
385 const uint8_t *iv,
size_t iv_len,
386 const uint8_t *plaintext,
size_t plaintext_len,
404 const uint8_t *key,
size_t key_len,
405 const uint8_t *iv,
size_t iv_len,
406 const uint8_t *ciphertext,
size_t ciphertext_len,
480 int (*delete_all_sessions_func)(
const char *name,
size_t name_len,
void *
user_data);
513 int (*store_pre_key)(uint32_t pre_key_id, uint8_t *record,
size_t record_len,
void *
user_data);
522 int (*contains_pre_key)(uint32_t pre_key_id,
void *
user_data);
530 int (*remove_pre_key)(uint32_t pre_key_id,
void *
user_data);
563 int (*store_signed_pre_key)(uint32_t signed_pre_key_id, uint8_t *record,
size_t record_len,
void *
user_data);
572 int (*contains_signed_pre_key)(uint32_t signed_pre_key_id,
void *
user_data);
580 int (*remove_signed_pre_key)(uint32_t signed_pre_key_id,
void *
user_data);
616 int (*get_local_registration_id)(
void *
user_data, uint32_t *registration_id);
729 void (*lock)(
void *
user_data),
void (*unlock)(
void *user_data));
737 void (*log)(
int level,
const char *message,
size_t len,
void *user_data));
void * user_data
Definition: signal_protocol.h:489
int(* hmac_sha256_final_func)(void *hmac_context, signal_buffer **output, void *user_data)
Definition: signal_protocol.h:318
Definition: signal_protocol.c:324
int(* sha512_digest_init_func)(void **digest_context, void *user_data)
Definition: signal_protocol.h:336
int(* sha512_digest_update_func)(void *digest_context, const uint8_t *data, size_t data_len, void *user_data)
Definition: signal_protocol.h:347
Definition: signal_protocol.c:25
int(* hmac_sha256_update_func)(void *hmac_context, const uint8_t *data, size_t data_len, void *user_data)
Definition: signal_protocol.h:307
void * user_data
Definition: signal_protocol.h:410
void(* hmac_sha256_cleanup_func)(void *hmac_context, void *user_data)
Definition: signal_protocol.h:327
Definition: signal_protocol_internal.h:8
Definition: signal_protocol.h:661
Definition: signal_protocol.h:592
Definition: session_record.c:20
void * user_data
Definition: signal_protocol.h:539
Definition: signal_protocol_types.h:48
Definition: signal_protocol_internal.h:23
Definition: signal_protocol_internal.h:18
int(* hmac_sha256_init_func)(void **hmac_context, const uint8_t *key, size_t key_len, void *user_data)
Definition: signal_protocol.h:296
Definition: session_pre_key.c:17
Definition: signal_protocol.h:413
void * user_data
Definition: signal_protocol.h:589
Definition: signal_protocol.h:492
Definition: signal_protocol_types.h:39
Definition: signal_protocol.c:194
Definition: signal_protocol.h:276
int(* encrypt_func)(signal_buffer **output, int cipher, const uint8_t *key, size_t key_len, const uint8_t *iv, size_t iv_len, const uint8_t *plaintext, size_t plaintext_len, void *user_data)
Definition: signal_protocol.h:382
int(* decrypt_func)(signal_buffer **output, int cipher, const uint8_t *key, size_t key_len, const uint8_t *iv, size_t iv_len, const uint8_t *ciphertext, size_t ciphertext_len, void *user_data)
Definition: signal_protocol.h:402
Definition: session_pre_key.c:11
void * user_data
Definition: signal_protocol.h:658
void * user_data
Definition: signal_protocol.h:700
int(* sha512_digest_final_func)(void *digest_context, signal_buffer **output, void *user_data)
Definition: signal_protocol.h:358
int(* random_func)(uint8_t *data, size_t len, void *user_data)
Definition: signal_protocol.h:285
void(* sha512_digest_cleanup_func)(void *digest_context, void *user_data)
Definition: signal_protocol.h:367
Definition: sender_key_record.c:18
Definition: signal_protocol.h:542