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

Reply via email to