public string GetPassword(string title, string superPassword) { var record = vault.Get(title); var sign = cipher.CalculateHash(superPassword); if (record.Sign != sign) { throw new InvalidSuperPasswordException(); } return(cipher.Decrypt(record.CipherPassword, superPassword)); }
public void VaultsFunctionalityTest(IVault vault) { var titles = vault.GetTitles(); Assert.Empty(titles); var title = "Test"; var cipherPassword = "******"; var sign = "jo1h23o7tb120d301823801"; var record = new VaultRecord { Title = title, CipherPassword = cipherPassword, Sign = sign }; vault.Store(record); titles = vault.GetTitles(); Assert.True(titles.Count() == 1); Assert.True(titles.ElementAt(0) == title); Assert.Throws <TitleAlreadyPresentException>(() => vault.Store(record)); record = vault.Get(title); Assert.Equal(title, record.Title); Assert.Equal(cipherPassword, record.CipherPassword); Assert.Equal(sign, record.Sign); Assert.Throws <TitleNotFoundException>(() => vault.Get("Title not present")); var resultRemove = vault.Remove(title); titles = vault.GetTitles(); Assert.True(resultRemove); Assert.True(titles.Count() == 0); }