Duuba XAdES is a library for creating XML advanced electronic signatures (XAdES) for sealing and signing.
It is an easier to use and significantly better performing alternative to DSS (Digital Signature Services) for XAdES signatures.
Use it to create XAdES baseline signatures according to ETSI specifications TS 101 903 v1.4.1 and EN 319 132 v1.1.1.  

Duuba supports both ETSI specifications of XAdES, TS 101 903 V1.4.1 and EN 319 132 V1.1.1.

The main difference between these two specifications is that for some of the qualifying properties EN 319 132 defines additional data or uses another representation of the same data. Duuba therefore includes new versions of the corresponding XML element declarations in the XML schema (the elements with “V2” suffix). There are also different classes to represent the different versions of these properties. 

Duuba will automatically create the correct elements based on the specification set when creating the signature. 

Features

  • Creates XAdes baseline signatures
  • Can be used for signing EESSI documents
  • Fast (signing 1.2GB takes 9.4 seconds)
  • Compact 
  • Easy to use
  • Well documented in the code
  • Can handle large documents (tested with documents up to 1.2GB) 
  • Low memory usage

Download

Download the zipped files or visit our Github page to clone, fork or download Duuba XAdES. You can also download the .jar file from our page on Maven Central.

Using Duuba XAdES

Duuba XAdES is available on Maven Central and can be included in your project using the following Maven coordinates:

<groupId>org.duuba.xades</groupId>
<artifactId>xades</artifactId>
<version>1.0.0</version>

Duuba is built on top of the Apache Santuario library for the processing of XML signatures. It follows the standard Java XML factory pattern and adds the classes and factory methods for the elements representing the XAdES signature and its qualifying attributes.
This means that you will need to use both the factory from Santuario to create the “normal” XML signature object and use org.duuba.xades.XadesSignatureFactory to create the XAdES specific ones.
To ensure you use the correct XMLSignatureFactory instance use the XadesSignatureFactory.getXMLSignatureFactory() method.

To facilitate the creation of an enveloped XAdES baseline signature we have included a builder, org.duuba.xades.builders.BasicEnvelopedSignatureBuilder, that takes care of creating all necessary elements of the XAdES signature.
You provide
– private key
– certificate and
– values for the qualifying properties to include
and the builder will take care of constructing the XAdES signature.
An example of how the builder can be used to create the signature can be found in org.duuba.xades.examples.EnvelopedBBExample.

Duuba?

In case you’re wondering what the project name means…
The word duuba comes from the Isthmus Zapotec language, spoken in the south of Mexico. Its meanings include ‘signature, stamp, seal’.