libnetconf-cpp: support specifying callback for keyboard-interactive auth

Change-Id: Id51e0b65ac2e28698b69a358df3c554579618bf6
diff --git a/src/netconf-client.h b/src/netconf-client.h
index bd89e6b..1923e71 100644
--- a/src/netconf-client.h
+++ b/src/netconf-client.h
@@ -1,5 +1,6 @@
 #pragma once
 
+#include <functional>
 #include <libnetconf2/messages_client.h>
 #include <memory>
 #include <optional>
@@ -22,11 +23,14 @@
     ~ReportedError() override;
 };
 
+using KbdInteractiveCb = std::function<std::string(const std::string&, const std::string&, const std::string&, bool)>;
+
 class Session {
 public:
     Session(struct nc_session* session);
     ~Session();
     static std::unique_ptr<Session> connectPubkey(const std::string& host, const uint16_t port, const std::string& user, const std::string& pubPath, const std::string& privPath);
+    static std::unique_ptr<Session> connectKbdInteractive(const std::string& host, const uint16_t port, const std::string& user, const KbdInteractiveCb& callback);
     static std::unique_ptr<Session> connectSocket(const std::string& path);
     std::vector<std::string_view> capabilities() const;
     std::shared_ptr<libyang::Data_Node> getConfig(const NC_DATASTORE datastore,