21#include <dhtnet/certstore.h>
22#include <opendht/infohash.h>
23#include <opendht/crypto.h>
34 using clock = std::chrono::system_clock;
41 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_; }
74 bool confirmed =
false,
75 const std::string& conversationId =
"");
79 const dhtnet::tls::TrustStore::PermissionStatus status);
82 dhtnet::tls::TrustStore::PermissionStatus status,
87 return trust_->getCertificateStatus(
cert_id);
92 return trust_->getCertificatesByStatus(status);
102 return accountTrust_.verify(
crt);
105 const std::map<dht::InfoHash, Contact>&
getContacts()
const;
106 void setContacts(
const std::map<dht::InfoHash, Contact>&);
112 const std::filesystem::path&
path()
const {
return path_; }
119 const std::shared_ptr<dht::crypto::PublicKey>&
peer_device,
122 const std::string& conversationId,
123 std::vector<uint8_t>&& payload);
125 std::map<std::string, std::string>
getTrustRequest(
const dht::InfoHash& from)
const;
131 const std::map<dht::PkId, KnownDevice>&
getKnownDevices()
const {
return knownDevices_; }
133 const std::string& name = {},
134 const time_point& last_sync = time_point::min());
136 const std::string& name = {},
137 const time_point& last_sync = time_point::min(),
147 const std::string accountId_;
148 const std::filesystem::path path_;
149 mutable std::mutex mutex_;
150 std::map<dht::InfoHash, Contact> contacts_;
151 std::map<dht::InfoHash, TrustRequest> trustRequests_;
152 std::map<dht::InfoHash, KnownDevice> knownDevicesLegacy_;
154 std::map<dht::PkId, KnownDevice> knownDevices_;
157 dht::crypto::TrustList accountTrust_;
159 std::unique_ptr<dhtnet::tls::TrustStore> trust_;
160 std::string accountUri_;
162 OnChangeCallback callbacks_;
165 void loadTrustRequests();
167 void loadKnownDevices();
168 void saveKnownDevices()
const;
171 void saveTrustRequests()
const;
void emitSignal(Args... args)