public HandshakeResponseModel CreateHandshakeResponseObject(HandshakeRequestModel request) //on the server
 {
     if (!ServerMode)
     {
         throw new Exception("Calling serverside encryption method from client.");
     }
     HandshakeInitiated = true;
     return(new HandshakeResponseModel
     {
         ClientSecret = Hashing.Sha256(request.ClientSecret),
         PublicKey = Handshake.GetPublicKey(),
         Data = Handshake.Encrypt(request.PublicKey, PrivateKey)
     });
 }
Beispiel #2
0
        public HandshakeResponseModel Post(HandshakeRequestModel model)
        {
            // Check if we have an identity token
            if (string.IsNullOrEmpty(model.Identity))
            {
                return(new HandshakeResponseModel
                {
                    IsSuccessful = false,
                });
            }

            // Process as handshake, matching identity token
            var user = dbContext.MqttUsers
                       .Where(x => x.Identity == model.Identity)
                       .FirstOrDefault();

            // Check if user is found
            if (user == null)
            {
                return(new HandshakeResponseModel
                {
                    IsSuccessful = false,
                });
            }

            // Add handshake
            user.LastHandshakeAt = DateTime.Now;
            var userHandshake = new MqttUserHandshake
            {
                MqttUserId  = user.Id,
                HandshakeAt = user.LastHandshakeAt,
            };

            dbContext.MqttUserHandshakes.Add(userHandshake);
            dbContext.SaveChanges();

            return(new HandshakeResponseModel
            {
                IsSuccessful = true,
            });
        }