21#include <dhtnet/certstore.h>
22#include <opendht/infohash.h>
23#include <opendht/crypto.h>
34 using clock = std::chrono::system_clock;
41 = std::function<
void(
const std::string&,
const std::string&,
const std::vector<uint8_t>&,
time_t)>;
57 const std::shared_ptr<crypto::Certificate>&
cert,
58 const std::filesystem::path&
path,
62 const std::string&
accountId()
const {
return accountId_; }
73 bool addContact(
const dht::InfoHash&,
bool confirmed =
false,
const std::string& conversationId =
"");
74 bool updateConversation(
const dht::InfoHash& h,
const std::string& conversationId,
bool added =
false);
79 dhtnet::tls::TrustStore::PermissionStatus status,
84 return trust_->getCertificateStatus(
cert_id);
89 return trust_->getCertificatesByStatus(status);
96 const std::map<dht::InfoHash, Contact>&
getContacts()
const;
97 void setContacts(
const std::map<dht::InfoHash, Contact>&);
103 const std::filesystem::path&
path()
const {
return path_; }
110 const std::shared_ptr<dht::crypto::PublicKey>&
peer_device,
113 const std::string& conversationId,
114 std::vector<uint8_t>&& payload);
116 std::map<std::string, std::string>
getTrustRequest(
const dht::InfoHash& from)
const;
118 const std::string& deviceId =
"");
123 const std::map<dht::PkId, KnownDevice>&
getKnownDevices()
const {
return knownDevices_; }
125 const std::string& name = {},
126 const time_point& last_sync = time_point::min());
128 const std::string& name = {},
129 const time_point& last_sync = time_point::min(),
139 const std::string accountId_;
140 const std::filesystem::path path_;
141 mutable std::mutex mutex_;
142 std::map<dht::InfoHash, Contact> contacts_;
143 std::map<dht::InfoHash, TrustRequest> trustRequests_;
144 std::map<dht::InfoHash, KnownDevice> knownDevicesLegacy_;
146 std::map<dht::PkId, KnownDevice> knownDevices_;
149 dht::crypto::TrustList accountTrust_;
151 std::unique_ptr<dhtnet::tls::TrustStore> trust_;
152 std::string accountUri_;
154 OnChangeCallback callbacks_;
157 void loadTrustRequests();
159 void loadKnownDevices();
160 void saveKnownDevices()
const;
163 void saveTrustRequests()
const;
void emitSignal(Args... args)