XAdES4j is an high-level, configurable and extensible Java implementation of XML Advanced Electronic Signatures (XAdES 1.3.2 and 1.4.1). It enables producing, verifying and extending signatures in the main XAdES forms: XAdES-BES, XAdES-EPES, XAdES-T and XAdES-C. Also, extended forms are supported through the enrichment of an existing signature.
The API provides an high level of abstraction, handling all the structural details of XAdES. The library relies on Apache XML Security for the core XML-DSIG processing and uses Guice to assemble the different configurable components.
There are multiple implementations of XML-DSIG, namely the one bundled with the Java platform and the one in Apache XML Security. However, Java doesn't have support for XAdES and solid/complete/public implementations are hard to find. The motivation for this project emerges directly from those facts.
The library is available on Maven (the current release is still using the google code group).
<dependency> <groupId>com.googlecode.xades4j</groupId> <artifactId>xades4j</artifactId> <version>1.5.0</version> </dependency>
If you can't find the information you need on the wiki and/or javadocs please refer to the tests in the source code, which illustrate all the features. Also, feel free to give some feedback, as it will be useful for further improvements.
For an overview of the library's architecture and implementation you can watch the XAdES4j Prezi.
Q & A
Use the xades4j tag on Stack Overflow.