public void RequestConstructorInitialisesTheValues()
 {
     var request = new EncryptedRequest();
     var response = new EncryptedResponse(request);
     // Only check one property is set, since the properties are set by the base class
     Assert.AreEqual(request.Identifier, response.RequestIdentifier);
 }
 public void EncryptedDataCanBeSetAndRetrieved()
 {
     var request = new EncryptedRequest();
     var data = "SomeEncryptedData";
     request.EncryptedData = data;
     Assert.AreEqual(data, request.EncryptedData);
 }
 public void FullConstructorInitialisesTheValues()
 {
     var sessionId = "MyNewSession";
     var data = "SomeEncryptedData";
     var request = new EncryptedRequest(sessionId, data);
     Assert.AreEqual(sessionId, request.SessionToken);
     Assert.AreEqual(data, request.EncryptedData);
 }
 public void SessionConstructorInitialisesTheValues()
 {
     var sessionId = "MyNewSession";
     var request = new EncryptedRequest(sessionId);
     Assert.AreEqual(sessionId, request.SessionToken);
 }
        /// <summary>
        /// Sends a message to a remote server.
        /// </summary>
        /// <param name="action">The action to perform.</param>
        /// <param name="request">The request to send to the server.</param>
        /// <returns>The response from the server.</returns>
        public Response SendMessage(string action, ServerRequest request)
        {
            // Make sure there is a password
            if ((cryptoKey.Length == 0) || (cryptoIv.Length == 0)) InitialisePassword();

            // Generate the encrypted request
            var encryptedRequest = new EncryptedRequest();
            encryptedRequest.Action = action;
            var crypto = new RijndaelManaged();
            crypto.Key = cryptoKey;
            crypto.IV = cryptoIv;
            encryptedRequest.EncryptedData = EncryptMessage(crypto, request.ToString());

            // Send the request
            var response = innerConnection.SendMessage("ProcessSecureRequest", encryptedRequest);
            var encryptedResponse = response as EncryptedResponse;

            // Generate the actual response
            if ((response.Result == ResponseResult.Success) && (encryptedResponse != null))
            {
                var data = DecryptMessage(crypto, encryptedResponse.EncryptedData);
                response = XmlConversionUtil.ProcessResponse(data);
            }
            return response;
        }