public void TestDecryptWithKeyFileImageFile()
        {
            Passphrase passphrase = Passphrase.Create("a", Resources.My_Key_File);

            using (V1AxCryptDocument document = new V1AxCryptDocument())
            {
                bool keyIsOk = document.Load(passphrase, new V1Aes128CryptoFactory().CryptoId, FakeDataStore.ExpandableMemoryStream(Resources.Foto_2015_05_19_23_19_08__a____My_Keyfile_jpg));
                Assert.That(keyIsOk, Is.True, "The passphrase provided is correct!");
                using (MemoryStream plaintextStream = new MemoryStream())
                {
                    document.DecryptTo(plaintextStream);
                    Assert.That(plaintextStream.Length, Is.EqualTo(260053), "Wrong length of decrypted JPG");
                }
            }
        }
        public void TestDecryptWithKeyFilePdfFile()
        {
            Passphrase passphrase = Passphrase.Create("b", Resources.My_Key_File);

            using (V1AxCryptDocument document = new V1AxCryptDocument())
            {
                bool keyIsOk = document.Load(passphrase, new V1Aes128CryptoFactory().CryptoId, FakeDataStore.ExpandableMemoryStream(Resources._2003_05_28_PcWorld_AxCrypt__b____My_Keyfile_pdf));
                Assert.That(keyIsOk, Is.True, "The passphrase provided is correct!");
                using (MemoryStream plaintextStream = new MemoryStream())
                {
                    document.DecryptTo(plaintextStream);
                    Assert.That(plaintextStream.Length, Is.EqualTo(132498), "Wrong length of decrypted PDF");
                }
            }
        }
        public void TestDecryptWithKeyFileShortTextFile()
        {
            Passphrase passphrase = Passphrase.Create("p", Resources.My_Key_File);

            using (V1AxCryptDocument document = new V1AxCryptDocument())
            {
                bool keyIsOk = document.Load(passphrase, new V1Aes128CryptoFactory().CryptoId, FakeDataStore.ExpandableMemoryStream(Resources.Passphrase__p____My_Keyfile_txt));
                Assert.That(keyIsOk, Is.True, "The passphrase provided is correct!");
                using (MemoryStream plaintextStream = new MemoryStream())
                {
                    document.DecryptTo(plaintextStream);
                    string text = Encoding.UTF8.GetString(plaintextStream.GetBuffer(), 0, (int)plaintextStream.Length);
                    Assert.That(text, Is.EqualTo("asdfasdfasdf"), "Unexpected content of file.");
                }
            }
        }
        public async Task AskForNewLogOnPassphraseAutomaticallyBecauseNoIdentitiesExists()
        {
            Resolve.FileSystemState.KnownPassphrases.Add(Passphrase.Create("aaa"));
            IdentityViewModel ivm = new IdentityViewModel(Resolve.FileSystemState, Resolve.KnownIdentities, Resolve.UserSettings, Resolve.SessionNotify);

            ivm.LoggingOnAsync = (e) =>
            {
                e.Passphrase = new Passphrase("aaa");
                e.Name       = "New User Passphrase";
                return(Task.FromResult <object>(null));
            };

            await ivm.AskForLogOnPassphrase.ExecuteAsync(LogOnIdentity.Empty);

            Assert.That(ivm.LogOnIdentity.Passphrase.Text, Is.EqualTo("aaa"));
            Assert.That(Resolve.KnownIdentities.DefaultEncryptionIdentity.Passphrase.Thumbprint, Is.EqualTo(new Passphrase("aaa").Thumbprint));

            Passphrase id = Resolve.FileSystemState.KnownPassphrases.FirstOrDefault(i => i.Thumbprint == new Passphrase("aaa").Thumbprint);

            Assert.That(id.Thumbprint, Is.EqualTo(Resolve.KnownIdentities.DefaultEncryptionIdentity.Passphrase.Thumbprint));
        }
        public async Task TestLogOnLogOffWhenLoggedOffAndNoIdentities()
        {
            bool wasCreateNew     = true;
            IdentityViewModel ivm = new IdentityViewModel(Resolve.FileSystemState, Resolve.KnownIdentities, Resolve.UserSettings, Resolve.SessionNotify);

            ivm.LoggingOnAsync = (e) =>
            {
                wasCreateNew = e.IsAskingForPreviouslyUnknownPassphrase;
                e.Passphrase = new Passphrase("ccc");
                e.Name       = "New User Passphrase";
                return(Task.FromResult <object>(null));
            };

            Resolve.FileSystemState.KnownPassphrases.Add(Passphrase.Create("ccc"));
            await ivm.LogOnLogOff.ExecuteAsync(null);

            Assert.That(wasCreateNew, Is.False, "Logging on event should not be with Create New set.");
            Assert.That(Resolve.KnownIdentities.IsLoggedOn, Is.True, "Should be logged on.");
            Assert.That(Resolve.KnownIdentities.DefaultEncryptionIdentity.Passphrase.Thumbprint, Is.EqualTo(new Passphrase("ccc").Thumbprint));
            Assert.That(Resolve.FileSystemState.KnownPassphrases.Count(), Is.EqualTo(1));
        }