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); }
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]); }
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); } }