예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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 ();
                }
            }
        }
예제 #3
0
        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);
            }
        }