public void TestConstruction() { using (PasswordHash pwd1 = new PasswordHash(TEST_PASSWORD)) { //no salt provided using (PasswordHash pwd2 = new PasswordHash(TEST_PASSWORD)) Assert.AreNotEqual(pwd1, pwd2); using (PasswordHash pwd2 = new PasswordHash(false, Password.Encoding.GetBytes(TEST_PASSWORD))) Assert.AreNotEqual(pwd1, pwd2); //identical salt using (PasswordHash pwd2 = new PasswordHash(TEST_PASSWORD, pwd1.Salt)) Assert.AreEqual(pwd1, pwd2); using (PasswordHash pwd2 = new PasswordHash(false, Password.Encoding.GetBytes(TEST_PASSWORD), pwd1.Salt)) Assert.AreEqual(pwd1, pwd2); using (PasswordHash pwd2 = new PasswordHash(new MemoryStream(Password.Encoding.GetBytes(TEST_PASSWORD)), pwd1.Salt)) Assert.AreEqual(pwd1, pwd2); using (PasswordHash pwd2 = new PasswordHash(new Password(TEST_PASSWORD), pwd1.Salt)) Assert.AreEqual(pwd1, pwd2); using (SecureString sstr = SecureStringUtils.Create(TEST_PASSWORD)) { using (PasswordHash pwd2 = new PasswordHash(sstr, pwd1.Salt)) Assert.AreEqual(pwd1, pwd2); using (PasswordHash pwd2 = new PasswordHash(sstr)) Assert.AreNotEqual(pwd1, pwd2); } } }
IEnumerable <SecureString> MakeStrings() { yield return(SecureStringUtils.Create(TEST_PASSWORD)); yield return(SecureStringUtils.Create(TEST_PASSWORD.ToCharArray())); yield return(SecureStringUtils.Create(new MemoryStream(Encoding.Unicode.GetBytes(TEST_PASSWORD)))); yield return(SecureStringUtils.Create(new MemoryStream(Encoding.UTF8.GetBytes(TEST_PASSWORD)), Encoding.UTF8)); yield return(SecureStringUtils.AppendAll(new SecureString(), TEST_PASSWORD)); }
public void TestRecreate() { PasswordKey pk1 = new PasswordKey(TEST_PASSWORD); PasswordKey pk2 = new PasswordKey(SecureStringUtils.Create(TEST_PASSWORD)); Assert.AreNotEqual(pk1.CreateKey().Key, pk2.CreateKey().Key); pk2.Salt = pk1.Salt; Assert.AreEqual(pk1.CreateKey().Key, pk2.CreateKey().Key); pk1.CreateKey(); Assert.AreEqual(pk1.CreateKey().Key, pk2.CreateKey().Key); pk1.Salt = new Salt(); Assert.AreNotEqual(pk1.Salt, pk2.Salt); Assert.AreNotEqual(pk1.CreateKey().Key, pk2.CreateKey().Key); Assert.AreEqual(pk1.CreateKey().Key, pk2.CreateKey(pk1.Salt).Key); pk2.Salt = pk1.Salt; Assert.AreEqual(pk1.Salt, pk2.Salt); Assert.AreEqual(pk1.CreateKey().Key, pk2.CreateKey().Key); }