Beispiel #1
0
        /// <inheritdoc/>
        public override void ShowInView(IHtmlView htmlView, KeyValueList <string, string> variables, Navigation redirectedFrom)
        {
            base.ShowInView(htmlView, variables, redirectedFrom);
            _viewModel = new OpenSafeViewModel(
                Ioc.GetOrCreate <INavigationService>(),
                Ioc.GetOrCreate <ILanguageService>(),
                Ioc.GetOrCreate <ISvgIconService>(),
                Ioc.GetOrCreate <IThemeService>(),
                Ioc.GetOrCreate <IBaseUrlService>(),
                Ioc.GetOrCreate <IFeedbackService>(),
                Ioc.GetOrCreate <ICryptoRandomService>(),
                Ioc.GetOrCreate <ISettingsService>(),
                Ioc.GetOrCreate <IRepositoryStorageService>(),
                RedirectedFrom);

            Bindings.BindCommand("GoBack", _viewModel.GoBackCommand);
            Bindings.BindCommand("OkCommand", _viewModel.OkCommand);
            Bindings.BindCommand("CancelCommand", _viewModel.CancelCommand);
            Bindings.BindCommand("ResetSafeCommand", _viewModel.ResetSafeCommand);
            Bindings.BindText("Password", null, (v) => _viewModel.Password = SecureStringExtensions.StringToSecureString(v), null, null, HtmlViewBindingMode.OneWayToViewmodel);
            Bindings.BindText("PasswordConfirmation", null, (v) => _viewModel.PasswordConfirmation = SecureStringExtensions.StringToSecureString(v), null, null, HtmlViewBindingMode.OneWayToViewmodel);
            Bindings.BindInvalid("Password", () => _viewModel.InvalidPasswordError, _viewModel, nameof(_viewModel.InvalidPasswordError), HtmlViewBindingMode.OneWayToView);
            Bindings.BindInvalid("PasswordConfirmation", () => _viewModel.InvalidPasswordConfirmationError, _viewModel, nameof(_viewModel.InvalidPasswordConfirmationError), HtmlViewBindingMode.OneWayToView);

            string html = _viewService.GenerateHtml(_viewModel);

            View.LoadHtml(html);
        }
        public void CorrectlyConvertsSecureStringToUnicodeBytes()
        {
            string       candidate       = "lazy 🐢🖐🏿 doc.";
            SecureString secureCandidate = SecureStringExtensions.StringToSecureString(candidate);

            byte[] bytes = SecureStringExtensions.SecureStringToBytes(secureCandidate, Encoding.Unicode);

            Assert.AreEqual("lazy 🐢🖐🏿 doc.", Encoding.Unicode.GetString(bytes));
        }
        public void AreEqualWorksWithDifferentPassword()
        {
            CloudStorageCredentials credentials = new CloudStorageCredentials
            {
                Password = SecureStringExtensions.StringToSecureString("abc")
            };
            CloudStorageCredentials credentials2 = new CloudStorageCredentials
            {
                Password = SecureStringExtensions.StringToSecureString("def")
            };

            Assert.IsFalse(credentials.AreEqualOrNull(credentials2));
        }
Beispiel #4
0
        public void Version1ConfigWillBeUpdated()
        {
            XDocument xml = XDocument.Parse(Version1Settings);
            Mock <IXmlFileService> fileService = new Mock <IXmlFileService>();

            fileService.
            Setup(m => m.TryLoad(It.IsAny <string>(), out xml)).
            Returns(true);
            Mock <IDataProtectionService> dataProtectionService = new Mock <IDataProtectionService>();

            dataProtectionService.
            Setup(m => m.Protect(It.Is <byte[]>(p => p.SequenceEqual(Encoding.ASCII.GetBytes("abcdefgh"))))).
            Returns("protected_abcdefgh_v2");
            dataProtectionService.
            Setup(m => m.Unprotect(It.Is <string>(p => p == "protected_abcdefgh_v2"))).
            Returns(SecureStringExtensions.SecureStringToBytes(SecureStringExtensions.StringToSecureString("abcdefgh_v2"), Encoding.Unicode));
            dataProtectionService.
            Setup(m => m.Protect(It.Is <byte[]>(p => p.SequenceEqual(Encoding.UTF8.GetBytes("abcdefgh_v2"))))).
            Returns("protected_abcdefgh_v3");
            dataProtectionService.
            Setup(m => m.Unprotect(It.Is <string>(p => p == "protected_abcdefgh_v3"))).
            Returns(Encoding.UTF8.GetBytes("abcdefgh_v3"));

            dataProtectionService.
            Setup(m => m.Protect(It.Is <byte[]>(p => p.SequenceEqual(Encoding.UTF8.GetBytes("martinstoeckli"))))).
            Returns("protected_martinstoeckli_v3");
            dataProtectionService.
            Setup(m => m.Unprotect(It.Is <string>(p => p == "protected_martinstoeckli_v3"))).
            Returns(Encoding.UTF8.GetBytes("martinstoeckli_v3"));

            SettingsServiceBase service  = new TestableService(fileService.Object, dataProtectionService.Object);
            SettingsModel       settings = service.LoadSettingsOrDefault();

            Assert.AreEqual("twofish_gcm", settings.SelectedEncryptionAlgorithm);
            Assert.AreEqual(true, settings.AdoptCloudEncryptionAlgorithm);
            Assert.AreEqual("scuj2wfpdcodmgzm", settings.TransferCode);
            Assert.AreEqual(2, settings.TransferCodeHistory.Count);
            Assert.AreEqual("scuj2wfpdcodmgzm", settings.TransferCodeHistory[0]);
            Assert.AreEqual("b2bgiqeghfvn2ufx", settings.TransferCodeHistory[1]);

            Assert.AreEqual(SettingsModel.NewestSupportedRevision, settings.Revision);
            Assert.IsNotNull(settings.Credentials);
            Assert.AreEqual(CloudStorageClientFactory.CloudStorageIdWebdav, settings.Credentials.CloudStorageId);
            Assert.AreEqual("https://webdav.hidrive.strato.com/users/martinstoeckli/", settings.Credentials.Url);
            Assert.AreEqual("martinstoeckli_v3", settings.Credentials.Username);
            Assert.AreEqual("abcdefgh_v3", settings.Credentials.UnprotectedPassword);

            // Updated settings where saved
            fileService.Verify(m => m.TrySerializeAndSave(It.IsAny <string>(), It.IsAny <SettingsModel>()), Times.Once);
        }
        public void CorrectlyConvertsSecureStringToString()
        {
            SecureString secureCandidate = new SecureString();

            secureCandidate.AppendChar('F');
            secureCandidate.AppendChar('o');
            secureCandidate.AppendChar('x');
            string retrievedCandidate = SecureStringExtensions.SecureStringToString(secureCandidate);

            Assert.AreEqual("Fox", retrievedCandidate);

            secureCandidate = SecureStringExtensions.StringToSecureString(null);
            Assert.IsNull(secureCandidate);
        }
        public void CorrectlyConvertsStringToSecureString()
        {
            string       candidate = "The brown fox jumps over the lazy 🐢🖐🏿 doc.";
            SecureString result    = SecureStringExtensions.StringToSecureString(candidate);

            Assert.IsNotNull(result);
            Assert.AreEqual("The brown fox jumps over the lazy 🐢🖐🏿 doc.", SecureStringExtensions.SecureStringToString(result));

            candidate = null;
            result    = SecureStringExtensions.StringToSecureString(candidate);
            Assert.IsNull(result);

            candidate = string.Empty;
            result    = SecureStringExtensions.StringToSecureString(candidate);
            Assert.AreEqual(0, result.Length);
        }
Beispiel #7
0
        internal bool TryParseFromView(VueBindingDescription binding, string formattedValue, out object value)
        {
            PropertyInfo propertyInfo = _dotnetViewModel.GetType().GetProperty(binding.PropertyName);

            if (propertyInfo != null)
            {
                try
                {
                    Type propertyType = propertyInfo.PropertyType;
                    if (string.Equals("null", formattedValue, StringComparison.InvariantCultureIgnoreCase))
                    {
                        value = null;
                        return(true);
                    }
                    else if (propertyType == typeof(string))
                    {
                        value = formattedValue;
                        return(true);
                    }
                    else if (propertyType == typeof(bool))
                    {
                        value = bool.Parse(formattedValue);
                        return(true);
                    }
                    else if (propertyType == typeof(int))
                    {
                        value = int.Parse(formattedValue);
                        return(true);
                    }
                    else if (propertyType == typeof(SecureString))
                    {
                        value = SecureStringExtensions.StringToSecureString(formattedValue);
                        return(true);
                    }
                }
                catch (Exception)
                {
                    // This will return false
                }
            }
            value = null;
            return(false);
        }
        public void AreEqualsWorksCorrectly()
        {
            SecureString candidate1 = SecureStringExtensions.StringToSecureString("lazy 🐢🖐🏿 doc.");
            SecureString candidate2 = SecureStringExtensions.StringToSecureString("lazy 🐢🖐🏿 doc.");

            Assert.IsTrue(SecureStringExtensions.AreEqual(candidate1, candidate2));

            // Equal in length
            candidate1 = SecureStringExtensions.StringToSecureString("Hello world");
            candidate2 = SecureStringExtensions.StringToSecureString("Hello presi");
            Assert.IsFalse(SecureStringExtensions.AreEqual(candidate1, candidate2));

            // Different in length
            candidate1 = SecureStringExtensions.StringToSecureString("Hello world");
            candidate2 = SecureStringExtensions.StringToSecureString("Hello president");
            Assert.IsFalse(SecureStringExtensions.AreEqual(candidate1, candidate2));

            // Both null are equal
            candidate1 = null;
            candidate2 = null;
            Assert.IsTrue(SecureStringExtensions.AreEqual(candidate1, candidate2));
        }
        /// <inheritdoc/>
        public override void ShowInView(IHtmlView htmlView, KeyValueList <string, string> variables, Navigation redirectedFrom)
        {
            base.ShowInView(htmlView, variables, redirectedFrom);
            IStoryBoardService storyBoardService             = Ioc.GetOrCreate <IStoryBoardService>();
            SerializeableCloudStorageCredentials credentials = storyBoardService.ActiveStory.LoadFromSession <SerializeableCloudStorageCredentials>(SynchronizationStorySessionKey.CloudStorageCredentials);

            _viewModel = new CloudStorageAccountViewModel(
                Ioc.GetOrCreate <INavigationService>(),
                Ioc.GetOrCreate <ILanguageService>(),
                Ioc.GetOrCreate <ISvgIconService>(),
                Ioc.GetOrCreate <IThemeService>(),
                Ioc.GetOrCreate <IBaseUrlService>(),
                storyBoardService,
                Ioc.GetOrCreate <IFeedbackService>(),
                Ioc.GetOrCreate <ICloudStorageClientFactory>(),
                credentials);

            Bindings.BindCommand("GoBack", _viewModel.GoBackCommand);
            Bindings.BindCommand("OkCommand", _viewModel.OkCommand);
            Bindings.BindCommand("CancelCommand", _viewModel.CancelCommand);
            Bindings.BindText("Url", null, (v) => _viewModel.Url           = v, null, null, HtmlViewBindingMode.OneWayToViewmodel);
            Bindings.BindText("Username", null, (v) => _viewModel.Username = v, null, null, HtmlViewBindingMode.OneWayToViewmodel);
            Bindings.BindText("Password", () => SecureStringExtensions.SecureStringToString(_viewModel.Password), (v) => _viewModel.Password = SecureStringExtensions.StringToSecureString(v), _viewModel, nameof(_viewModel.Password), HtmlViewBindingMode.TwoWayPlusOneTimeToView);
            Bindings.BindCheckbox("Secure", null, (v) => _viewModel.Secure = v, null, null, HtmlViewBindingMode.OneWayToViewmodel);

            string html = _viewService.GenerateHtml(_viewModel);

            View.LoadHtml(html);
        }
 /// <summary>
 /// Gets the plain text OAuth2 client id from an obfuscated client id.
 /// The client id is not really secret, but we don't want to spread it neither.
 /// </summary>
 /// <returns>The plain text client id.</returns>
 private string DeobfuscateClientId(string obfuscatedClientId)
 {
     return(CryptoUtils.Deobfuscate(obfuscatedClientId, SecureStringExtensions.StringToSecureString(_obfuscationKey)));
 }
Beispiel #11
0
 /// <summary>
 /// Alias of <see cref="SecureStringExtensions.StringToSecureString(string)"/>
 /// </summary>
 /// <param name="password">Password in string form.</param>
 /// <returns>Password in a SecureString.</returns>
 public static SecureString StringToSecureString(string password)
 {
     return(SecureStringExtensions.StringToSecureString(password));
 }