public void NoteIsEncryptedIsCorrectlySet() { // test with encrypted notes DbStorage storage = new DbEncryptedStorage (this.connFactory, this.testUser, key); var sample_notes = DbStorageTests.GetSampleNotes (); foreach(var note in sample_notes) { storage.SaveNote (note); } storage.Dispose (); foreach(var note in sample_notes) { // the stored notes should only contain hex chars using (var db = connFactory.OpenDbConnection ()) { var db_note = db.First<DBNote> (n => n.Guid == note.Guid); // this will fail if any non-hex chars are in Assert.IsTrue (db_note.IsEncypted); } } storage = new DbStorage (this.connFactory, this.testUser.Username); sample_notes = DbStorageTests.GetSampleNotes (); foreach(var note in sample_notes) { storage.SaveNote (note); } storage.Dispose (); foreach(var note in sample_notes) { // the stored notes should only contain hex chars using (var db = connFactory.OpenDbConnection ()) { var db_note = db.First<DBNote> (n => n.Guid == note.Guid); // this will fail if any non-hex chars are in Assert.IsFalse (db_note.IsEncypted); } } }
public void NoteIsAlwaysEncryptedWithSameKey() { string first_key; var note = DbStorageTests.GetSampleNotes ()[0]; // save for first time using (var storage = new DbEncryptedStorage (connFactory, testUser, key)) { storage.SaveNote (note); } using (var db = connFactory.OpenDbConnection ()) { var db_note = db.First<DBNote> (n => n.Guid == note.Guid); first_key = db_note.EncryptedKey; Assert.That (!string.IsNullOrEmpty (first_key)); } // change the text and store note again note.Text = "Foobar"; // save for first time using (var storage = new DbEncryptedStorage (connFactory, testUser, key)) { storage.SaveNote (note); } using (var db = connFactory.OpenDbConnection ()) { var db_note = db.First<DBNote> (n => n.Guid == note.Guid); Assert.AreEqual (first_key, db_note.EncryptedKey); } }
public void EncryptedStorageStoresNoPlaintextNotes() { var storage = new DbEncryptedStorage (connFactory, testUser, key); var sample_notes = DbStorageTests.GetSampleNotes (); foreach(var note in sample_notes) { storage.SaveNote (note); } storage.Dispose (); foreach(var note in sample_notes) { // the stored notes should only contain hex chars using (var db = connFactory.OpenDbConnection ()) { var db_note = db.First<DBNote> (n => n.Guid == note.Guid); // this will fail if any non-hex chars are in db_note.Text.ToByteArray (); } } }
public void StorageCanBeReusedAfterReEncryptNotes() { DbEncryptedStorage storage = new DbEncryptedStorage (this.connFactory, this.testUser, key); var sample_notes = DbStorageTests.GetSampleNotes (); foreach(var note in sample_notes) { storage.SaveNote (note); } storage.Dispose (); storage = new DbEncryptedStorage (connFactory, testUser, key); var new_key = CryptoHelper.Create256BitLowerCaseHexKey (new RNGCryptoServiceProvider ()); storage.ReEncryptAllNotes (new_key); var decrypted_notes = storage.GetNotes (); foreach (var note in sample_notes) { Assert.AreEqual (note.Text, decrypted_notes.Values.First (n => n.Guid == note.Guid).Text); } }