summaryrefslogtreecommitdiff
path: root/chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h')
-rw-r--r--chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h67
1 files changed, 67 insertions, 0 deletions
diff --git a/chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h b/chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h
new file mode 100644
index 00000000000..60e0c96ca61
--- /dev/null
+++ b/chromium/jingle/notifier/base/gaia_token_pre_xmpp_auth.h
@@ -0,0 +1,67 @@
+// Copyright (c) 2011 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 JINGLE_NOTIFIER_BASE_GAIA_TOKEN_PRE_XMPP_AUTH_H_
+#define JINGLE_NOTIFIER_BASE_GAIA_TOKEN_PRE_XMPP_AUTH_H_
+
+#include <string>
+#include <vector>
+
+#include "base/compiler_specific.h"
+#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,
+ const std::string& auth_mechanism);
+
+ 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_mechanism,
+ const std::string& auth_token) OVERRIDE;
+
+ virtual bool IsAuthDone() const OVERRIDE;
+
+ virtual bool IsAuthorized() const OVERRIDE;
+
+ virtual bool HadError() const OVERRIDE;
+
+ virtual int GetError() const OVERRIDE;
+
+ virtual buzz::CaptchaChallenge GetCaptchaChallenge() const OVERRIDE;
+
+ virtual std::string GetAuthToken() const OVERRIDE;
+
+ virtual std::string GetAuthMechanism() const OVERRIDE;
+
+ // buzz::SaslHandler implementation.
+
+ virtual std::string ChooseBestSaslMechanism(
+ const std::vector<std::string>& mechanisms, bool encrypted) OVERRIDE;
+
+ virtual buzz::SaslMechanism* CreateSaslMechanism(
+ const std::string& mechanism) OVERRIDE;
+
+ private:
+ std::string username_;
+ std::string token_;
+ std::string token_service_;
+ std::string auth_mechanism_;
+};
+
+} // namespace notifier
+
+#endif // JINGLE_NOTIFIER_BASE_GAIA_TOKEN_PRE_XMPP_AUTH_H_