public static void UpdateItem(PasswordEntry entry) { using (var connection = NewConnection()) { connection.CreateTable<PasswordEntry>(); entry.Labels = (entry.Labels ?? "").ToLower(); connection.Update(entry); connection.Commit(); } }
private static void InsertItem(PasswordEntry entry) { using (var connection = NewConnection()) { connection.CreateTable<PasswordEntry>(); var id = connection.Insert(entry); //entry.Id = id; connection.Commit(); } }
private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { var deferral = args.GetDeferral(); args.Cancel = false; NewEntry = new PasswordEntry { Id = -1, Domain = Domain.Text, Username = Username.Text, PasswordLength = SettingsProvider.DefaultPasswordLength, UseCapitalLetters = SettingsProvider.IncludeCapitalsByDefault, UseDigits = SettingsProvider.IncludeDigitsByDefault, UseSpecialCharacters = SettingsProvider.IncludeSpecialsByDefault, }; PasswordStorage.Entries.Add(NewEntry); deferral.Complete(); }
public EditViewModel(IMessenger messenger) { _messenger = messenger; if (IsInDesignMode) { EditedEntry = new PasswordEntry { Domain = "company.com", PasswordLength = 15, Tag = "Some tag", TagAsCurrentMonth = false, UseCapitalLetters = true, UseDigits = true, UseSpecialCharacters = false, Username = "******" }; } SaveChangesCommand = new RelayCommand(SaveChanges); CancelCommand = new RelayCommand(Cancel); }
public DetailsViewModel(IMessenger messenger) { _messenger = messenger; if (IsInDesignMode) { Entry = new PasswordEntry { Domain = "company.com", PasswordLength = 15, Tag = "Some tag", TagAsCurrentMonth = false, UseCapitalLetters = true, UseDigits = true, UseSpecialCharacters = false, Username = "******" }; } GenerateCommand = new RelayCommand(Generate); EditCommand = new RelayCommand(() => _messenger.Send(new EditEntryMessage(Entry))); DeleteCommand = new RelayCommand(Delete); }
public DeleteEntryMessage(PasswordEntry entry) { Entry = entry; }
public ShowEntryDetailsMessage(PasswordEntry entry) { Entry = entry; }
public MoveEntryToDirectoryMessage(PasswordEntry entry, string destination) { Entry = entry; Destination = destination; }
public static string Generate(PasswordEntry entry) { var entryStringified = entry.Domain + entry.Username + (entry.TagAsCurrentMonth ? DateTime.Now.ToString("yyyy-MM-dd") : entry.Tag); var entryBytes = Encoding.UTF8.GetBytes(entryStringified); var secretBytes = Encoding.UTF8.GetBytes(SettingsProvider.SecretSequence); var resultBytes = new byte[entryBytes.Length + secretBytes.Length]; for (int i = 0; i < entryBytes.Length; i++) { resultBytes[i] = (byte)((entryBytes[i % entryBytes.Length] * i * secretBytes[Math.Abs(secretBytes.Length - i) % secretBytes.Length]) % 256); } for (int i = entryBytes.Length; i < resultBytes.Length; i++) { resultBytes[i] = (byte)((entryBytes[i * secretBytes[i % secretBytes.Length] % entryBytes.Length] * secretBytes[entryBytes[i % entryBytes.Length] % secretBytes.Length]) % 256); } var hap = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha512); var ch = hap.CreateHash(); ch.Append(resultBytes.AsBuffer()); var hash = ch.GetValueAndReset().ToArray(); var hashCharacters = new List<char>(); var pointer = 0; if (entry.UseDigits) for (int i = 0; i < 12; i++) { hashCharacters.Add(Digits[hash[pointer] * i % Digits.Length]); pointer++; } if (entry.UseSpecialCharacters) for (int i = 0; i < 12; i++) { hashCharacters.Add(Specials[hash[pointer] * i % Specials.Length]); pointer++; } if (entry.UseCapitalLetters) for (int i = 0; i < 20; i++) { hashCharacters.Add(CapitalLetters[hash[pointer] * i % CapitalLetters.Length]); pointer++; } for (int i = 0; i < 20; i++) { hashCharacters.Add(LowerLetters[hash[pointer] * i % LowerLetters.Length]); pointer++; } var passwordChars = new List<char>(entry.PasswordLength); for (int i = 0; passwordChars.Count < entry.PasswordLength; i += 13) { passwordChars.Add(hashCharacters[i % hashCharacters.Count]); } var threshold = Math.Sqrt(Enumerable.Sum(hash, x => (double)x)); return string.Join("", passwordChars.OrderBy(x => x > threshold)); }
public EditEntryMessage(PasswordEntry entry) { Entry = entry; }
private static void RemoveItem(PasswordEntry item) { using (var connection = NewConnection()) { connection.CreateTable<PasswordEntry>(); connection.Delete<PasswordEntry>(item.Id); connection.Commit(); } }