Example #1
0
        private static string GuessPassword(Account.Field[] fields)
        {
            // Search all fields first with the appropriate names
            var password = fields.Where(i => PasswordFields.Contains(i.Name.ToLower())).ToArray();

            if (password.Length == 1)
            {
                return(password[0].Value);
            }

            // We have too many, remove all the text fields.
            // If there's only one left then it's the password.
            password = password.Where(i => i.Kind == Account.FieldKind.Password).ToArray();
            if (password.Length == 1)
            {
                return(password[0].Value);
            }

            // If there's only one password field, assume it's the password.
            password = fields.Where(i => i.Kind == Account.FieldKind.Password).ToArray();
            if (password.Length == 1)
            {
                return(password[0].Value);
            }

            return(null);
        }
Example #2
0
 public AutofillId[] GetRequiredSaveFields()
 {
     if (SaveType == SaveDataType.Password)
     {
         return(PasswordFields.Select(f => f.AutofillId).ToArray());
     }
     else if (SaveType == SaveDataType.CreditCard && HintToFieldsMap.ContainsKey(View.AutofillHintCreditCardNumber))
     {
         return(HintToFieldsMap[View.AutofillHintCreditCardNumber].Select(f => f.AutofillId).ToArray());
     }
     return(new AutofillId[0]);
 }
Example #3
0
        public SavedItem GetSavedItem()
        {
            if (SaveType == SaveDataType.Password)
            {
                var passwordField = PasswordFields.FirstOrDefault(f => !string.IsNullOrWhiteSpace(f.TextValue));
                if (passwordField == null)
                {
                    return(null);
                }

                var savedItem = new SavedItem
                {
                    Type  = App.Enums.CipherType.Login,
                    Login = new SavedItem.LoginItem
                    {
                        Password = GetFieldValue(passwordField)
                    }
                };

                var usernameField = Fields.TakeWhile(f => f.AutofillId != passwordField.AutofillId).LastOrDefault();
                savedItem.Login.Username = GetFieldValue(usernameField);

                return(savedItem);
            }
            else if (SaveType == SaveDataType.CreditCard)
            {
                var savedItem = new SavedItem
                {
                    Type = App.Enums.CipherType.Card,
                    Card = new SavedItem.CardItem
                    {
                        Number   = GetFieldValue(View.AutofillHintCreditCardNumber),
                        Name     = GetFieldValue(View.AutofillHintName),
                        ExpMonth = GetFieldValue(View.AutofillHintCreditCardExpirationMonth, true),
                        ExpYear  = GetFieldValue(View.AutofillHintCreditCardExpirationYear),
                        Code     = GetFieldValue(View.AutofillHintCreditCardSecurityCode)
                    }
                };

                return(savedItem);
            }

            return(null);
        }
        public Configuration(ConfigData configData) : this()
        {
            AuditMode = configData.AuditMode ?? false;
            MinimumPasswordValidatorProperties = configData.MinimumPasswordValidatorProperties ?? 0;
            PasswordValidatorRequiredLength    = configData.PasswordValidatorRequiredLength ?? 0;

            if (configData.PasswordValidatorRequiredProperties != null)
            {
                foreach (var data in configData.PasswordValidatorRequiredProperties)
                {
                    PasswordValidatorRequiredProperties.Add(data);
                }
            }

            foreach (var data in configData.Behavior)
            {
                Behavior[data.Key] = CreateBehavior(data.Value);
            }

            foreach (var data in configData.Sinks)
            {
                Sinks[data.Key] = CreateBehavior(data.Value);
            }

            foreach (var data in configData.CsrfProtectionAttributes)
            {
                AddAntiCsrfTAttributeToConfiguration(data);
            }

            foreach (var data in configData.PasswordFields)
            {
                PasswordFields.Add(data.ToUpperInvariant());
            }

            foreach (var data in configData.ConstantFields)
            {
                ConstantFields.Add(data);
            }
        }