public void Handle(IAriesSession session, AnswerChallenge answer) { var challenge = session.GetAttribute("challenge") as string; if (challenge == null) { session.Close(); return; } var myAnswer = ChallengeResponse.AnswerChallenge(challenge, Secret); if (myAnswer != answer.Answer) { session.Close(); return; } //Trust established, good to go var newSession = Sessions.UpgradeSession <GluonSession>(session, x => { x.IsAuthenticated = true; x.CallSign = (string)session.GetAttribute("callSign"); x.PublicHost = (string)session.GetAttribute("publicHost"); x.InternalHost = (string)session.GetAttribute("internalHost"); }); newSession.Write(new AnswerAccepted()); }