jDKIM is a DKIM implementation library written in Java. It provides both verification and signing and also provides Mailets for the Apache JAMES project.
The 0.2 release is the first release. It requires Java 1.5 at runtime and it requires the JVM running the library to support SHA256withRSA cypher suite. The default Sun Java 1.5 does support this suite. If your JVM doesn't support it you can install a third party cryptography provider like BouncyCastle and configure it appropriately in your JVM.
The architecture is thought to handle multiple signatures with performance in mind: body hashing for multiple signatures is computed concurrently in a single stream run.
The whole internal verification/signing is done via OutputStream leaving much more flexibility than the use of InputStream. As the InputStream approach is easier from the user side the default implementation simply prepare the OutputStream and copy the supplied InputStream to the OutputStream.
Please make sure you use dnsjava 2.0.7 or greater as 2.0.6 and previous versions don't handle correctly some TXT record escaping that are very common in DKIM public key records. Failure to include such an updated dnsjava will prevent jDKIM from correctly verify signatures.
The product currently include a generic library module called "main" and a module providing mailets for DKIM signing