private async Task <bool> ReadAndDecrypt(byte[] buffer, int start, CancellationToken token, int extendedCount)
        {
            //We don't need to know the amount read, I think.
            int count = await DecoratedClient.ReadAsync(buffer, start, extendedCount, token)
                        .ConfigureAwait(false);

            //IF we read nothing then that means the socket disconnected
            if (count == 0)
            {
                return(false);
            }

            //Check cancel again, we want to fail quick
            if (token.IsCancellationRequested)
            {
                return(false);
            }

            //We throw above if we have an invalid size that can't be decrypted once read.
            //That means callers will need to be careful in what they request to read.
            DecryptionServiceProvider.Crypt(buffer, start, extendedCount);

            //Check cancel again, we want to fail quick
            if (token.IsCancellationRequested)
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        public void DecryptTest()
        {
            DecryptionServiceProvider decryptionServiceProvider = new DecryptionServiceProvider("DecryptTest");
            string messageToEncrypt = "This is the test message.";
            string encryptedMessage = decryptionServiceProvider.Encrypt(messageToEncrypt);
            string decryptedMessage = decryptionServiceProvider.Decrypt(encryptedMessage);

            Assert.Equal(messageToEncrypt, decryptedMessage);
        }
        /// <summary>
        /// The main method that initializes the needed instances and starts the HealthWatcher Management Server.
        /// </summary>
        /// <param name="args">The program expects no command line arguments.</param>
        private static void Main(string[] args)
        {
            string firebaseDbToken      = "KXdQfwlci2Cytgg8tOJzUAJA0zgK9tflQ5Qit720";
            string realtimeDatabaseLink = "https://healthwatcher-f04bf-default-rtdb.firebaseio.com";
            string decryptionKey        = "HealthWatcherKey";
            string EIMDictionaryPath    = "EIMDictionary.bin";

            IDecryptionServiceProvider decryptionServiceProvider = new DecryptionServiceProvider(decryptionKey);
            IFirebaseClient            firebaseClient            = new FirebaseClient(realtimeDatabaseLink, firebaseDbToken);
            IExceptionLogger           devLogger  = new DeveloperLogger();
            IExceptionLogger           userLogger = new UserLogger();
            Controller controller = new Controller(EIMDictionaryPath, firebaseClient, decryptionServiceProvider, devLogger);
            MainView   mainView   = new MainView(controller, userLogger);

            mainView.StartView();
        }