Index: chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.h |
diff --git a/chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.h b/chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0eb6aa0e994faea2079cc354b83324e6ec8d6479 |
--- /dev/null |
+++ b/chrome/common/net/notifier/communicator/gaia_token_pre_xmpp_auth.h |
@@ -0,0 +1,61 @@ |
+// Copyright (c) 2010 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 CHROME_COMMON_NET_NOTIFIER_COMMUNICATOR_GAIA_TOKEN_PRE_XMPP_AUTH_H_ |
+#define CHROME_COMMON_NET_NOTIFIER_COMMUNICATOR_GAIA_TOKEN_PRE_XMPP_AUTH_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "talk/xmpp/prexmppauth.h" |
+ |
+namespace notifier { |
+ |
+// This class implements buzz::PreXmppAuth interface for token-based |
+// authentication in GTalk. It looks for the X-GOOGLE-TOKEN auth mechanism |
+// and uses that instead of the default auth mechanism (PLAIN). |
+class GaiaTokenPreXmppAuth : public buzz::PreXmppAuth { |
+ public: |
+ GaiaTokenPreXmppAuth(const std::string& username, const std::string& token, |
+ const std::string& token_service); |
+ |
+ virtual ~GaiaTokenPreXmppAuth(); |
+ |
+ // buzz::PreXmppAuth (-buzz::SaslHandler) implementation. We stub |
+ // all the methods out as we don't actually do any authentication at |
+ // this point. |
+ virtual void StartPreXmppAuth(const buzz::Jid& jid, |
+ const talk_base::SocketAddress& server, |
+ const talk_base::CryptString& pass, |
+ const std::string& auth_cookie); |
+ |
+ virtual bool IsAuthDone() const; |
+ |
+ virtual bool IsAuthorized() const; |
+ |
+ virtual bool HadError() const; |
+ |
+ virtual int GetError() const; |
+ |
+ virtual buzz::CaptchaChallenge GetCaptchaChallenge() const; |
+ |
+ virtual std::string GetAuthCookie() const; |
+ |
+ // buzz::SaslHandler implementation. |
+ |
+ virtual std::string ChooseBestSaslMechanism( |
+ const std::vector<std::string>& mechanisms, bool encrypted); |
+ |
+ virtual buzz::SaslMechanism* CreateSaslMechanism( |
+ const std::string& mechanism); |
+ |
+ private: |
+ std::string username_; |
+ std::string token_; |
+ std::string token_service_; |
+}; |
+ |
+} // namespace notifier |
+ |
+#endif // CHROME_COMMON_NET_NOTIFIER_COMMUNICATOR_GAIA_TOKEN_PRE_XMPP_AUTH_H_ |