1 #ifndef __DC_APEERSTATE_H__
2 #define __DC_APEERSTATE_H__
9 #include "dc_aheader.h"
13 typedef struct _dc_apeerstate dc_apeerstate_t;
16 #define DC_PE_NOPREFERENCE 0
17 #define DC_PE_MUTUAL 1
18 #define DC_PE_RESET 20
33 time_t last_seen_autocrypt;
36 #define DC_NOT_VERIFIED 0
37 #define DC_BIDIRECT_VERIFIED 2
40 char* public_key_fingerprint;
43 time_t gossip_timestamp;
44 char* gossip_key_fingerprint;
46 dc_key_t* verified_key;
47 char* verified_key_fingerprint;
49 #define DC_SAVE_TIMESTAMPS 0x01
50 #define DC_SAVE_ALL 0x02 // implies a call to dc_reset_gossiped_timestamp()
53 #define DC_DE_ENCRYPTION_PAUSED 0x01 // recoverable by an incoming encrypted mail
54 #define DC_DE_FINGERPRINT_CHANGED 0x02 // recoverable by a new verify
61 void dc_apeerstate_unref (dc_apeerstate_t*);
63 int dc_apeerstate_init_from_header (dc_apeerstate_t*,
const dc_aheader_t*, time_t message_time);
64 int dc_apeerstate_init_from_gossip (dc_apeerstate_t*,
const dc_aheader_t*, time_t message_time);
66 int dc_apeerstate_degrade_encryption (dc_apeerstate_t*, time_t message_time);
68 void dc_apeerstate_apply_header (dc_apeerstate_t*,
const dc_aheader_t*, time_t message_time);
69 void dc_apeerstate_apply_gossip (dc_apeerstate_t*,
const dc_aheader_t*, time_t message_time);
71 char* dc_apeerstate_render_gossip_header (
const dc_apeerstate_t*,
int min_verified);
73 dc_key_t* dc_apeerstate_peek_key (
const dc_apeerstate_t*,
int min_verified);
75 int dc_apeerstate_recalc_fingerprint (dc_apeerstate_t*);
77 #define DC_PS_GOSSIP_KEY 0
78 #define DC_PS_PUBLIC_KEY 1
79 int dc_apeerstate_set_verified (dc_apeerstate_t*,
int which_key,
const char* fingerprint,
int verified);
81 int dc_apeerstate_load_by_addr (dc_apeerstate_t*, dc_sqlite3_t*,
const char* addr);
82 int dc_apeerstate_load_by_fingerprint (dc_apeerstate_t*, dc_sqlite3_t*,
const char* fingerprint);
83 int dc_apeerstate_save_to_db (
const dc_apeerstate_t*, dc_sqlite3_t*,
int create);
85 int dc_apeerstate_has_verified_key (
const dc_apeerstate_t*,
const dc_hash_t* fingerprints);