diff --git a/include/opendht/dhtrunner.h b/include/opendht/dhtrunner.h
index 847952630dec780bd1b150b5adf78066904a03af..ec7a07bb6bb352c69957a5eec9f2929cd3432afb 100644
--- a/include/opendht/dhtrunner.h
+++ b/include/opendht/dhtrunner.h
@@ -66,6 +66,8 @@ public:
     struct Context {
         std::unique_ptr<Logger> logger {};
         std::shared_ptr<PeerDiscovery> peerDiscovery {};
+        StatusCallback statusChangedCallback {};
+        CertificateStoreQuery certificateStore {};
         Context() {}
     };
 
diff --git a/src/dhtrunner.cpp b/src/dhtrunner.cpp
index c22501ca94098f57e6df4540519097bb3b5ead67..bd7816e446026f4a2432dbeaaab5cb9203a3bacc 100644
--- a/src/dhtrunner.cpp
+++ b/src/dhtrunner.cpp
@@ -114,6 +114,12 @@ DhtRunner::run(const SockAddr& local4, const SockAddr& local6, const DhtRunner::
     if (context.logger and dht_via_proxy_) {
         dht_via_proxy_->setLogger(*context.logger);
     }
+    statusCb = std::move(context.statusChangedCallback);
+    if (context.certificateStore) {
+        dht_->setLocalCertificateStore(std::move(context.certificateStore));
+        if (dht_via_proxy_)
+            dht_via_proxy_->setLocalCertificateStore(std::move(context.certificateStore));
+    }
 
     running = true;
     if (not config.threaded)