Index: third_party/libjingle_xmpp/xmpp/saslmechanism.h |
diff --git a/third_party/libjingle_xmpp/xmpp/saslmechanism.h b/third_party/libjingle_xmpp/xmpp/saslmechanism.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bf1f39558669cdedd5ddc7511d8f313ff4aa9b99 |
--- /dev/null |
+++ b/third_party/libjingle_xmpp/xmpp/saslmechanism.h |
@@ -0,0 +1,51 @@ |
+// Copyright 2004 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 WEBRTC_LIBJINGLE_XMPP_SASLMECHANISM_H_ |
+#define WEBRTC_LIBJINGLE_XMPP_SASLMECHANISM_H_ |
+ |
+#include <string> |
+ |
+namespace buzz { |
+ |
+class XmlElement; |
+ |
+ |
+// Defines a mechnanism to do SASL authentication. |
+// Subclass instances should have a self-contained way to present |
+// credentials. |
+class SaslMechanism { |
+ |
+public: |
+ |
+ // Intended to be subclassed |
+ virtual ~SaslMechanism() {} |
+ |
+ // Should return the name of the SASL mechanism, e.g., "PLAIN" |
+ virtual std::string GetMechanismName() = 0; |
+ |
+ // Should generate the initial "auth" request. Default is just <auth/>. |
+ virtual XmlElement * StartSaslAuth(); |
+ |
+ // Should respond to a SASL "<challenge>" request. Default is |
+ // to abort (for mechanisms that do not do challenge-response) |
+ virtual XmlElement * HandleSaslChallenge(const XmlElement * challenge); |
+ |
+ // Notification of a SASL "<success>". Sometimes information |
+ // is passed on success. |
+ virtual void HandleSaslSuccess(const XmlElement * success); |
+ |
+ // Notification of a SASL "<failure>". Sometimes information |
+ // for the user is passed on failure. |
+ virtual void HandleSaslFailure(const XmlElement * failure); |
+ |
+protected: |
+ static std::string Base64Encode(const std::string & plain); |
+ static std::string Base64Decode(const std::string & encoded); |
+ static std::string Base64EncodeFromArray(const char * plain, size_t length); |
+}; |
+ |
+} |
+ |
+#endif // WEBRTC_LIBJINGLE_XMPP_SASLMECHANISM_H_ |