1 /* 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef WEBRTC_LIBJINGLE_XMPP_XMPPAUTH_H_ 12 #define WEBRTC_LIBJINGLE_XMPP_XMPPAUTH_H_ 13 14 #include <vector> 15 16 #include "webrtc/libjingle/xmpp/jid.h" 17 #include "webrtc/libjingle/xmpp/prexmppauth.h" 18 #include "webrtc/libjingle/xmpp/saslhandler.h" 19 #include "webrtc/base/cryptstring.h" 20 #include "webrtc/base/sigslot.h" 21 22 class XmppAuth: public buzz::PreXmppAuth { 23 public: 24 XmppAuth(); 25 virtual ~XmppAuth(); 26 27 // TODO: Just have one "secret" that is either pass or 28 // token? 29 virtual void StartPreXmppAuth(const buzz::Jid& jid, 30 const rtc::SocketAddress& server, 31 const rtc::CryptString& pass, 32 const std::string& auth_mechanism, 33 const std::string& auth_token); 34 IsAuthDone()35 virtual bool IsAuthDone() const { return done_; } IsAuthorized()36 virtual bool IsAuthorized() const { return true; } HadError()37 virtual bool HadError() const { return false; } GetError()38 virtual int GetError() const { return 0; } GetCaptchaChallenge()39 virtual buzz::CaptchaChallenge GetCaptchaChallenge() const { 40 return buzz::CaptchaChallenge(); 41 } GetAuthMechanism()42 virtual std::string GetAuthMechanism() const { return auth_mechanism_; } GetAuthToken()43 virtual std::string GetAuthToken() const { return auth_token_; } 44 45 virtual std::string ChooseBestSaslMechanism( 46 const std::vector<std::string>& mechanisms, 47 bool encrypted); 48 49 virtual buzz::SaslMechanism * CreateSaslMechanism( 50 const std::string& mechanism); 51 52 private: 53 buzz::Jid jid_; 54 rtc::CryptString passwd_; 55 std::string auth_mechanism_; 56 std::string auth_token_; 57 bool done_; 58 }; 59 60 #endif // WEBRTC_LIBJINGLE_XMPP_XMPPAUTH_H_ 61 62