So the crypto module is done and available on trunk. Here is a minimal configuration that will do AES/CBC encryption:
1. Create a keystore and generate a secret key in it: keytool -genseckey -keystore /tmp/ks1.jceks -storetype JCEKS -alias mykey 2. Start Cayenne with crypto: // this can also be a URL or a String representing URL File keyStore = new File("/tmp/ks1.jceks”); // obtain this somehow char[] keyPassword = .. // “mykey” is the key alias in #1 Module crypto = new CryptoModuleBuilder().keyStore(keyStore, keyPassword, “mykey").build(); // this will enable encryption/decryption for all columns matching ^CRYPTO_ regex // those must be either character or binary columns ServerRuntime runtime = new ServerRuntime(“cayenne-myproject.xml", crypto); So just 3 lines of code give you the encryption. Of course it is fully customizable. See ‘CryptoModuleBuilder’ for what can be extended. Also the code is pretty raw, so it may break or may be refactored as we find bugs. I still need to study the performance and tweak as needed. Also there are certain strategies are not yet available. E.g. we only support block ciphers in CBC mode (as this is what I am planning to use in my apps). We will add support for ECB and also streaming ciphers eventually. But … everyone is free to give it a try ;) Andrus