Example #1
0
        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());
        }