public override void Parse(Node e)
        {
            if (e.GetType() == typeof(Protocol.Sasl.Challenge))
            {
                var c = e as Protocol.Sasl.Challenge;

                var step1 = new Step1(c.TextBase64);
                if (step1.Rspauth == null)
                {
                    //response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9ImduYXVjayIscmVhbG09IiIsbm9uY2U9IjM4MDQzMjI1MSIsY25vbmNlPSIxNDE4N2MxMDUyODk3N2RiMjZjOWJhNDE2ZDgwNDI4MSIsbmM9MDAwMDAwMDEscW9wPWF1dGgsZGlnZXN0LXVyaT0ieG1wcC9qYWJiZXIucnUiLGNoYXJzZXQ9dXRmLTgscmVzcG9uc2U9NDcwMTI5NDU4Y2EwOGVjYjhhYTIxY2UzMDhhM2U5Nzc
                    var s2 = new Step2(step1, this.Username, this.Password, this.Server);
                    var r  = new Protocol.Sasl.Response(s2.ToString());
                    this.XmppClientConnection.Send(r);
                }
                else
                {
                    // SEND: <response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>
                    this.XmppClientConnection.Send(new Protocol.Sasl.Response());
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// builds a step2 message reply to the given step1 message
        /// </summary>
        /// <param name="step1"></param>
        public Step2(Step1 step1, string username, string password, string server)
        {
            this.Nonce = step1.Nonce;

            // fixed for SASL n amessage servers (jabberd 1.x)
            if (this.SupportsAuth(step1.Qop))
            {
                this.Qop = "auth";
            }

            this.Realm     = step1.Realm;
            this.Charset   = step1.Charset;
            this.Algorithm = step1.Algorithm;

            this.Username = username;
            this.Password = password;
            this.Server   = server;

            this.GenerateCnonce();
            this.GenerateNc();
            this.GenerateDigestUri();
            this.GenerateResponse();
        }