public void TestRavenWithKeyServer() { var ks = new CeloClavis.RavenDBServer(serverURL, "Keys"); var n = new EncTest(); ((IEncryptedType)n).KeyServer = ks; ((IEncryptedType)n).EncryptionKeys.Add("SSN", "Key1"); //((IEncryptedType)n).EncryptionKeys.Add(() => n.SSN, "Key1"); ((IEncryptedType)n).Integrity(() => n.SSN, n.IntegrityValue); //n.SSN = "111-11-1111"; n.SSN = "222-22-2222"; using (var ds = new Raven.Client.Document.DocumentStore() { Url = serverURL, DefaultDatabase = "Test" }) { ds.Initialize(); var session = ds.OpenSession(); session.Store(n, n.ID); session.SaveChanges(); var test = session.Load<EncTest>(n.ID); ((IEncryptedType)test).KeyServer = ks; ((IEncryptedType)test).Integrity(() => test.SSN, test.IntegrityValue); Assert.AreEqual(n.ID, test.ID); Assert.AreEqual(n.SSN, test.SSN); string nSSN = ((IEncryptedType)n).AsClear(() => n.SSN).ToString(); string tSSN = ((IEncryptedType)test).AsClear(() => test.SSN).ToString(); Assert.AreEqual(nSSN, tSSN ); } }
public void TestRavenSeek() { var ks = new CeloClavis.RavenDBServer(serverURL, "Keys"); var ds = new Raven.Client.Document.DocumentStore() { Url = serverURL, DefaultDatabase = "Test" }; ds.Initialize(); var session = ds.OpenSession(); var n = new EncTest(); string toSeek = ((ISeekableType)n).HashValue("222-22-2222"); var result = (from a in session.Query<EncTest>() //where ((ISeekableType) a).HashedValues.Any(s => s.Key == "SSN" && s.Value == toSeek) where ((ISeekableType)a).HashedValues.Any(s => s.Key == ((Expression<Func<object>>) (() => n.SSN)).PropertyName() && s.Value == toSeek) select a).ToList(); foreach(var s in result) { ((IEncryptedType)s).KeyServer = ks; ((IEncryptedType)s).Integrity(() => s.SSN, s.IntegrityValue); Assert.AreEqual("222-22-2222", ((IEncryptedType)s).AsClear(() => s.SSN).ToString()); } }