/// <summary>
        /// Processes the request.
        /// </summary>
        /// <param name="header">The header.</param>
        /// <param name="publicKeyEncoded">The public key encoded.</param>
        /// <param name="response">The response.</param>
        /// <returns></returns>
        public static String ProcessRequest(ServerAuthority serverAuthority, byte[] publicKeyEncoded, RequestHeader header, String request)
        {
            if (header.MessageHeader.EncryptionHeader.EncryptionType != EncryptionTypes.None)
            {
                //byte[] publicKeyEncoded = client.RequestHeader.MessageHeader.EncryptionHeader.PublicKey;
                DHPublicKeyParameters publicKey = new DHPublicKeyParameters(
                    ((DHPublicKeyParameters)PublicKeyFactory.CreateKey(publicKeyEncoded)).Y, serverAuthority.Parameters);

                BigInteger agreementValue = serverAuthority.GenerateAgreementValue(publicKey);

                RijndaelCrypto crypto = new RijndaelCrypto();
                return crypto.Encrypt(request, agreementValue.ToString(16));
            }
            else
            {
                return request;
            }
        }
 public void EnableEncryption(ServerAuthority serverAuthority, byte[] encodedPublicKey)
 {
     encryptionEnabled = true;
     this.serverAuthority = serverAuthority;
     this.remotePublicKey = new DHPublicKeyParameters(
         ((DHPublicKeyParameters)PublicKeyFactory.CreateKey(encodedPublicKey)).Y, serverAuthority.Parameters);
 }
 public void DisableEncryption()
 {
     encryptionEnabled = false;
     this.serverAuthority = null;
     this.remotePublicKey = null;
 }