public void notify(Packet packet) { try { if (packet.ID.StartsWith("auth_get")) { Packet query = packet.getFirstChild("query"); String token = query.getChildValue("token"); int sequence = Convert.ToInt32(query.getChildValue("sequence")); String hash = auth.getZeroKHash(sequence, Encoding.UTF8.GetBytes(token), Encoding.UTF8.GetBytes(jabberModel.Password)); jabberModel.addResultHandler("0k_auth_" + Convert.ToString(counter), this); StreamWriter output = packet.Session.Writer; output.Write("<iq type='set' id='0k_auth_"); output.Write(Convert.ToString(counter++)); output.Write("'><query xmlns='jabber:iq:auth'><username>"); output.Write(jabberModel.User); output.Write("</username><resource>"); output.Write(jabberModel.Resource); output.Write("</resource><hash>"); output.Write(hash); output.Write("</hash></query></iq>"); output.Flush(); } else if (packet.Type.Equals("result")) { Console.WriteLine("Auth Handler passed"); packet.Session.Status = Session.SessionStatus.authenticated; AuthenticateDelegate ad = new AuthenticateDelegate(jabberModel.gui.Authenticated); jabberModel.gui.Invoke(ad); } else if (packet.Type.Equals("error")) { Console.WriteLine("Failed to authenticate: " + packet.getChildValue("error")); AuthenticationFailedDelegate afd = new AuthenticationFailedDelegate(jabberModel.gui.AuthenticationFailed); jabberModel.gui.Invoke(afd); } else { Console.WriteLine("Unknown result: " + packet.ToString()); } } catch (IOException ex) { Console.WriteLine(ex.StackTrace); } }