Encryption

Feb 6, 2015 at 7:42 PM
Have you given any consideration to a transparent encryption feature?

Could DBreeze be configured to encrypt data at the last stage before writing to disk and to decrypt data at the first stage after reading from disk? This would be a killer feature!
Coordinator
Feb 9, 2015 at 8:35 AM
DBreeze works on the low level with byte[] and it must be enough to supply the fundamental base for the higher level operations like compression, serialization, encryption. All higher level operations are not a point of DBreeze.

Nevertheless we a got one feature starting from [20140603] (read documentation).
It's possible to supply custom serializator/deserializator function

DBreeze.Utils.CustomSerializator.ByteArraySerializator = SerializeProtobuf;
DBreeze.Utils.CustomSerializator.ByteArrayDeSerializator = DeserializeProtobuf;

and then use constructions like

using (var tran = engine.GetTransaction())
        {              
            tran.Insert<int, XYZ>("t1", 1, new XYZ() {  P1 = 44, P2 = "well"});
            tran.Commit();
        }
If XYZ is not of a primitive type it will apply ByteArraySerializator before storing byte[] into value. So it means, that you can define your own function, which will e.g. serialize to protobuf and then crypt with encryption function. The same works for the Select commands and ByteArrayDeSerializator functions.