public MessageInfo ReadMessage(byte[] encryptedMessage) { var message = new SessionFragmentMessage(); message.Crypto = _crypto; message.Deserialize(new BEReader(encryptedMessage)); if (message.InvalidSignature) { throw new Exception("Invalid message signature."); } var info = new MessageInfo() { RequestAcknowledge = message.Header.RequestAcknowledge, Version = message.Header.Version, ChannelId = message.Header.ChannelId, MessageType = message.Header.SessionMessageType.ToString(), Data = message.Fragment }; if (message.Header.SessionMessageType == SessionMessageType.Json) { var jsonMessage = new JsonMessage(); jsonMessage.Deserialize(new BEReader(message.Fragment)); info.Json = jsonMessage.Json; } return(info); }