XAdES4j is a 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 a 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.
The library is available on Maven.
<dependency>
<groupId>com.googlecode.xades4j</groupId>
<artifactId>xades4j</artifactId>
<version>{version}</version>
</dependency>
Document doc = /* parse XML document */;
// Define the signing key/certificate
KeyingDataProvider kp = FileSystemKeyStoreKeyingDataProvider
.builder(/* key store location and type */)
.build();
// Define the signed object
DataObjectDesc obj = new DataObjectReference("")
.withTransform(new EnvelopedSignatureTransform())
.withDataObjectFormat(new DataObjectFormatProperty("text/xml"));
// Create the signature
XadesSigner signer = new XadesBesSigningProfile(kp).newSigner();
signer.sign(new SignedDataObjects(obj), doc.getDocumentElement());
- General usage documentation can be found on the project's wiki.
- Javadocs for the latest version can be found here.
- Unit tests in the source code illustrate all the features.
- Overview of the architecture and implementation on the XAdES4j Prezi.
xades4j
tag on Stack Overflow.
If XAdES4j has been useful to you, consider supporting it!