private bool ValidateMessage(dynamic message) { string command = (string)message.command; switch (command) { case "AUTHENTICATE": { string mac = HMacUtil.Encode(((string)message.transactionUuid + "." + (string)message.command)); return(Equals(mac, (string)message.signature)); } case "GET_USERS_WITH_ROLE": { string mac = HMacUtil.Encode(((string)message.transactionUuid + "." + (string)message.command + "." + (string)message.payload)); return(Equals(mac, (string)message.signature)); } default: Logger.Information("Unknown command: " + (string)message.command); break; } return(false); }
internal void Reply(string transactionUuid, string command, bool valid, dynamic payload = null) { dynamic response = new ExpandoObject(); response.transactionUuid = transactionUuid; response.command = command; response.status = (valid) ? "true" : "false"; response.clientVersion = VERSION; response.signature = HMacUtil.Encode(transactionUuid + "." + command + "." + (valid ? "true" : "false")); response.payload = payload; socket.Send(JsonConvert.SerializeObject(response)); LogResponse(response); }