Index: remoting/host/security_key/gnubby_auth_handler.h |
diff --git a/remoting/host/security_key/gnubby_auth_handler.h b/remoting/host/security_key/gnubby_auth_handler.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..137a8f7717d1c08a6e18823734e6986d99a60052 |
--- /dev/null |
+++ b/remoting/host/security_key/gnubby_auth_handler.h |
@@ -0,0 +1,71 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef REMOTING_HOST_SECURITY_KEY_GNUBBY_AUTH_HANDLER_H_ |
+#define REMOTING_HOST_SECURITY_KEY_GNUBBY_AUTH_HANDLER_H_ |
+ |
+#include <memory> |
+#include <string> |
+ |
+#include "base/callback.h" |
+#include "base/time/time.h" |
+ |
+namespace base { |
+class FilePath; |
+} // namespace base |
+ |
+namespace remoting { |
+ |
+class ClientSessionDetails; |
+ |
+// Class responsible for proxying authentication data between a local gnubbyd |
+// and the client. |
+class GnubbyAuthHandler { |
+ public: |
+ virtual ~GnubbyAuthHandler() {} |
+ |
+ // Used to send gnubby extension messages to the client. |
+ typedef base::Callback<void(int connection_id, const std::string& data)> |
+ SendMessageCallback; |
+ |
+ // Creates a platform-specific GnubbyAuthHandler. |
+ // All invocations of |send_message_callback| are guaranteed to occur before |
+ // the underlying GnubbyAuthHandler object is destroyed. It is not safe to |
+ // destroy the GnubbyAuthHandler object within the callback. |
+ // |client_session_details| will be valid until this instance is destroyed. |
+ static std::unique_ptr<GnubbyAuthHandler> Create( |
+ ClientSessionDetails* client_session_details, |
+ const SendMessageCallback& send_message_callback); |
+ |
+#if defined(OS_LINUX) |
+ // Specify the name of the socket to listen to gnubby requests on. |
+ static void SetGnubbySocketName(const base::FilePath& gnubby_socket_name); |
+#endif // defined(OS_LINUX) |
+ |
+ // Sets the callback used to send messages to the client. |
+ virtual void SetSendMessageCallback(const SendMessageCallback& callback) = 0; |
+ |
+ // Creates the platform specific connection to handle gnubby requests. |
+ virtual void CreateGnubbyConnection() = 0; |
+ |
+ // Returns true if |gnubby_connection_id| represents a valid connection. |
+ virtual bool IsValidConnectionId(int gnubby_connection_id) const = 0; |
+ |
+ // Sends the gnubby response from the client to the local gnubby agent. |
+ virtual void SendClientResponse(int gnubby_connection_id, |
+ const std::string& response) = 0; |
+ |
+ // Closes the gnubby connection represented by |gnubby_connection_id|. |
+ virtual void SendErrorAndCloseConnection(int gnubby_connection_id) = 0; |
+ |
+ // Returns the number of active gnubby connections. |
+ virtual size_t GetActiveConnectionCountForTest() const = 0; |
+ |
+ // Sets the timeout used when waiting for a gnubby response. |
+ virtual void SetRequestTimeoutForTest(base::TimeDelta timeout) = 0; |
+}; |
+ |
+} // namespace remoting |
+ |
+#endif // REMOTING_HOST_SECURITY_KEY_GNUBBY_AUTH_HANDLER_H_ |