# esig/dss architecture

> Architecture diagram of the GitHub repository esig/dss, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esig/dss
- Repository: https://github.com/esig/dss

## Overview

DSS is a Java framework for creating, extending, timestamping, and validating digital signatures and electronic attestations. Its principal workflow accepts documents and format-specific parameters, prepares data to sign, and produces a signed artifact; services also support signature extension and timestamping. ASiC adds a container workflow around CAdES/XAdES signatures, while mdoc and SD-JWT support attestation issuance and presentations. REST/SOAP remote attestation interfaces are present in the tree. The edges reflect sampled service behavior and documented product scope; wiring for unsampled modules is intentionally not inferred.

Main entry points: [`dss-document/src/main/java/eu/europa/esig/dss/signature/AbstractSignatureService.java`](https://github.com/esig/dss/blob/master/dss-document/src/main/java/eu/europa/esig/dss/signature/AbstractSignatureService.java) (Signature foundation), [`dss-cades/src/main/java/eu/europa/esig/dss/cades/signature/CAdESService.java`](https://github.com/esig/dss/blob/master/dss-cades/src/main/java/eu/europa/esig/dss/cades/signature/CAdESService.java) (CAdES service), [`dss-xades/src/main/java/eu/europa/esig/dss/xades/signature/XAdESService.java`](https://github.com/esig/dss/blob/master/dss-xades/src/main/java/eu/europa/esig/dss/xades/signature/XAdESService.java) (XAdES service), [`dss-pades/src/main/java/eu/europa/esig/dss/pades/signature/PAdESService.java`](https://github.com/esig/dss/blob/master/dss-pades/src/main/java/eu/europa/esig/dss/pades/signature/PAdESService.java) (PAdES service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_signature_formats["Signature formats"]
  node_signature_base["Signature foundation"]
  node_cades["CAdES service<br/>[CAdESService.java]"]
  node_xades["XAdES service<br/>[XAdESService.java]"]
  node_pades["PAdES service<br/>[PAdESService.java]"]
  node_pdf_engine["PDF engine"]
  node_jades["JAdES service<br/>[JAdESService.java]"]
  node_cbades["CB-AdES service<br/>[CBAdESService.java]"]
end

subgraph group_containers["ASiC containers"]
  node_asic_common["ASiC handling"]
  node_asic_cades["ASiC CAdES"]
  node_asic_xades["ASiC XAdES"]
end

subgraph group_attestations["Attestations"]
  node_mdoc["mDoc service<br/>[MdocService.java]"]
  node_sdjwt["SD-JWT service<br/>[SDJWTService.java]"]
end

subgraph group_remote_validation["Remote and validation"]
  node_remote_service["Remote creation"]
  node_rest_api["REST endpoint"]
  node_soap_api["SOAP endpoint"]
  node_revocation["Status validation"]
end

node_client(("Application"))
node_certificate_verifier["Certificate verifier"]
node_timestamp_source["Timestamp authority"]
node_signed_artifact["Signed artifact"]

node_client -->|"requests signing"| node_cades
node_client -->|"requests signing"| node_xades
node_client -->|"requests signing"| node_pades
node_client -->|"requests signing"| node_jades
node_client -->|"requests signing"| node_cbades
node_client -->|"requests container signing"| node_asic_cades
node_client -->|"requests container signing"| node_asic_xades
node_client -->|"issues or presents"| node_mdoc
node_client -->|"issues or presents"| node_sdjwt
node_cades -->|"uses shared operations"| node_signature_base
node_xades -->|"uses shared operations"| node_signature_base
node_pades -->|"uses shared operations"| node_signature_base
node_jades -->|"uses shared operations"| node_signature_base
node_cbades -->|"uses shared operations"| node_signature_base
node_pades -->|"delegates PDF work"| node_pdf_engine
node_asic_cades -->|"builds container"| node_asic_common
node_asic_xades -->|"builds container"| node_asic_common
node_asic_cades -->|"extends signatures"| node_cades
node_asic_xades -->|"extends signatures"| node_xades
node_rest_api -.-> node_remote_service
node_soap_api -.-> node_remote_service
node_remote_service -->|"creates attestations"| node_mdoc
node_remote_service -->|"creates attestations"| node_sdjwt
node_revocation -.-> node_certificate_verifier
node_signature_base -->|"checks certificates"| node_certificate_verifier
node_cades -.->|"requests timestamp"| node_timestamp_source
node_xades -.->|"requests timestamp"| node_timestamp_source
node_cades -->|"produces signature"| node_signed_artifact
node_xades -->|"produces signature"| node_signed_artifact
node_pades -->|"produces signature"| node_signed_artifact
node_jades -->|"produces signature"| node_signed_artifact
node_cbades -->|"produces signature"| node_signed_artifact
node_mdoc -->|"produces attestation"| node_signed_artifact
node_sdjwt -->|"produces attestation"| node_signed_artifact
node_asic_cades -->|"produces container"| node_signed_artifact
node_asic_xades -->|"produces container"| node_signed_artifact

click node_signature_base "https://github.com/esig/dss/blob/master/dss-document/src/main/java/eu/europa/esig/dss/signature/AbstractSignatureService.java"
click node_cades "https://github.com/esig/dss/blob/master/dss-cades/src/main/java/eu/europa/esig/dss/cades/signature/CAdESService.java"
click node_xades "https://github.com/esig/dss/blob/master/dss-xades/src/main/java/eu/europa/esig/dss/xades/signature/XAdESService.java"
click node_pades "https://github.com/esig/dss/blob/master/dss-pades/src/main/java/eu/europa/esig/dss/pades/signature/PAdESService.java"
click node_pdf_engine "https://github.com/esig/dss/blob/master/dss-pades-pdfbox/src/main/java/eu/europa/esig/dss/pdf/pdfbox/PdfBoxSignatureService.java"
click node_jades "https://github.com/esig/dss/blob/master/dss-jades/src/main/java/eu/europa/esig/dss/jades/signature/JAdESService.java"
click node_cbades "https://github.com/esig/dss/blob/master/dss-cb-ades/src/main/java/eu/europa/esig/dss/cbades/signature/CBAdESService.java"
click node_asic_common "https://github.com/esig/dss/blob/master/dss-asic-common/src/main/java/eu/europa/esig/dss/asic/common/ZipContainerHandler.java"
click node_asic_cades "https://github.com/esig/dss/blob/master/dss-asic-cades/src/main/java/eu/europa/esig/dss/asic/cades/signature/ASiCWithCAdESService.java"
click node_asic_xades "https://github.com/esig/dss/blob/master/dss-asic-xades/src/main/java/eu/europa/esig/dss/asic/xades/signature/ASiCWithXAdESService.java"
click node_mdoc "https://github.com/esig/dss/blob/master/dss-mdoc/src/main/java/eu/europa/esig/dss/attestation/mdoc/creation/MdocService.java"
click node_sdjwt "https://github.com/esig/dss/blob/master/dss-sd-jwt/src/main/java/eu/europa/esig/dss/attestation/sd/jwt/creation/SDJWTService.java"
click node_remote_service "https://github.com/esig/dss/blob/master/dss-attestation-creation-remote/src/main/java/eu/europa/esig/dss/ws/attestation/creation/common/RemoteAttestationCreationServiceImpl.java"
click node_rest_api "https://github.com/esig/dss/blob/master/dss-attestation-creation-rest/src/main/java/eu/europa/esig/dss/ws/attestation/creation/rest/RestAttestationCreationServiceImpl.java"
click node_soap_api "https://github.com/esig/dss/blob/master/dss-attestation-creation-soap/src/main/java/eu/europa/esig/dss/ws/attestation/creation/soap/SoapAttestationCreationServiceImpl.java"
click node_revocation "https://github.com/esig/dss/blob/master/dss-attestation-revocation-cwt/src/main/java/eu/europa/esig/dss/attestation/revocation/cwt/validation/statuslist/CWTTokenStatusListValidator.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_signature_base,node_cades,node_xades,node_pades,node_pdf_engine,node_jades,node_cbades toneBlue
class node_asic_common,node_asic_cades,node_asic_xades toneAmber
class node_mdoc,node_sdjwt toneMint
class node_remote_service,node_rest_api,node_soap_api,node_revocation toneRose
class node_client,node_certificate_verifier,node_timestamp_source,node_signed_artifact toneIndigo
```

## Components

### Signature formats

- [Signature foundation](https://github.com/esig/dss/blob/master/dss-document/src/main/java/eu/europa/esig/dss/signature/AbstractSignatureService.java): `dss-document/src/main/java/eu/europa/esig/dss/signature/AbstractSignatureService.java`
- [CAdES service](https://github.com/esig/dss/blob/master/dss-cades/src/main/java/eu/europa/esig/dss/cades/signature/CAdESService.java): `dss-cades/src/main/java/eu/europa/esig/dss/cades/signature/CAdESService.java`
- [XAdES service](https://github.com/esig/dss/blob/master/dss-xades/src/main/java/eu/europa/esig/dss/xades/signature/XAdESService.java): `dss-xades/src/main/java/eu/europa/esig/dss/xades/signature/XAdESService.java`
- [PAdES service](https://github.com/esig/dss/blob/master/dss-pades/src/main/java/eu/europa/esig/dss/pades/signature/PAdESService.java): `dss-pades/src/main/java/eu/europa/esig/dss/pades/signature/PAdESService.java`
- [PDF engine](https://github.com/esig/dss/blob/master/dss-pades-pdfbox/src/main/java/eu/europa/esig/dss/pdf/pdfbox/PdfBoxSignatureService.java): `dss-pades-pdfbox/src/main/java/eu/europa/esig/dss/pdf/pdfbox/PdfBoxSignatureService.java`
- [JAdES service](https://github.com/esig/dss/blob/master/dss-jades/src/main/java/eu/europa/esig/dss/jades/signature/JAdESService.java): `dss-jades/src/main/java/eu/europa/esig/dss/jades/signature/JAdESService.java`
- [CB-AdES service](https://github.com/esig/dss/blob/master/dss-cb-ades/src/main/java/eu/europa/esig/dss/cbades/signature/CBAdESService.java): `dss-cb-ades/src/main/java/eu/europa/esig/dss/cbades/signature/CBAdESService.java`

### ASiC containers

- [ASiC handling](https://github.com/esig/dss/blob/master/dss-asic-common/src/main/java/eu/europa/esig/dss/asic/common/ZipContainerHandler.java): `dss-asic-common/src/main/java/eu/europa/esig/dss/asic/common/ZipContainerHandler.java`
- [ASiC CAdES](https://github.com/esig/dss/blob/master/dss-asic-cades/src/main/java/eu/europa/esig/dss/asic/cades/signature/ASiCWithCAdESService.java): `dss-asic-cades/src/main/java/eu/europa/esig/dss/asic/cades/signature/ASiCWithCAdESService.java`
- [ASiC XAdES](https://github.com/esig/dss/blob/master/dss-asic-xades/src/main/java/eu/europa/esig/dss/asic/xades/signature/ASiCWithXAdESService.java): `dss-asic-xades/src/main/java/eu/europa/esig/dss/asic/xades/signature/ASiCWithXAdESService.java`

### Attestations

- [mDoc service](https://github.com/esig/dss/blob/master/dss-mdoc/src/main/java/eu/europa/esig/dss/attestation/mdoc/creation/MdocService.java): `dss-mdoc/src/main/java/eu/europa/esig/dss/attestation/mdoc/creation/MdocService.java`
- [SD-JWT service](https://github.com/esig/dss/blob/master/dss-sd-jwt/src/main/java/eu/europa/esig/dss/attestation/sd/jwt/creation/SDJWTService.java): `dss-sd-jwt/src/main/java/eu/europa/esig/dss/attestation/sd/jwt/creation/SDJWTService.java`

### Remote and validation

- [Remote creation](https://github.com/esig/dss/blob/master/dss-attestation-creation-remote/src/main/java/eu/europa/esig/dss/ws/attestation/creation/common/RemoteAttestationCreationServiceImpl.java): `dss-attestation-creation-remote/src/main/java/eu/europa/esig/dss/ws/attestation/creation/common/RemoteAttestationCreationServiceImpl.java`
- [REST endpoint](https://github.com/esig/dss/blob/master/dss-attestation-creation-rest/src/main/java/eu/europa/esig/dss/ws/attestation/creation/rest/RestAttestationCreationServiceImpl.java): `dss-attestation-creation-rest/src/main/java/eu/europa/esig/dss/ws/attestation/creation/rest/RestAttestationCreationServiceImpl.java`
- [SOAP endpoint](https://github.com/esig/dss/blob/master/dss-attestation-creation-soap/src/main/java/eu/europa/esig/dss/ws/attestation/creation/soap/SoapAttestationCreationServiceImpl.java): `dss-attestation-creation-soap/src/main/java/eu/europa/esig/dss/ws/attestation/creation/soap/SoapAttestationCreationServiceImpl.java`
- [Status validation](https://github.com/esig/dss/blob/master/dss-attestation-revocation-cwt/src/main/java/eu/europa/esig/dss/attestation/revocation/cwt/validation/statuslist/CWTTokenStatusListValidator.java): `dss-attestation-revocation-cwt/src/main/java/eu/europa/esig/dss/attestation/revocation/cwt/validation/statuslist/CWTTokenStatusListValidator.java`

### Other components

- **Application**
- **Certificate verifier**
- **Timestamp authority**
- **Signed artifact**

## Connections

- Application → CAdES service: requests signing
- Application → XAdES service: requests signing
- Application → PAdES service: requests signing
- Application → JAdES service: requests signing
- Application → CB-AdES service: requests signing
- Application → ASiC CAdES: requests container signing
- Application → ASiC XAdES: requests container signing
- Application → mDoc service: issues or presents
- Application → SD-JWT service: issues or presents
- CAdES service → Signature foundation: uses shared operations
- XAdES service → Signature foundation: uses shared operations
- PAdES service → Signature foundation: uses shared operations
- JAdES service → Signature foundation: uses shared operations
- CB-AdES service → Signature foundation: uses shared operations
- PAdES service → PDF engine: delegates PDF work
- ASiC CAdES → ASiC handling: builds container
- ASiC XAdES → ASiC handling: builds container
- ASiC CAdES → CAdES service: extends signatures
- ASiC XAdES → XAdES service: extends signatures
- REST endpoint → Remote creation
- SOAP endpoint → Remote creation
- Remote creation → mDoc service: creates attestations
- Remote creation → SD-JWT service: creates attestations
- Status validation → Certificate verifier
- Signature foundation → Certificate verifier: checks certificates
- CAdES service → Timestamp authority: requests timestamp
- XAdES service → Timestamp authority: requests timestamp
- CAdES service → Signed artifact: produces signature
- XAdES service → Signed artifact: produces signature
- PAdES service → Signed artifact: produces signature
- JAdES service → Signed artifact: produces signature
- CB-AdES service → Signed artifact: produces signature
- mDoc service → Signed artifact: produces attestation
- SD-JWT service → Signed artifact: produces attestation
- ASiC CAdES → Signed artifact: produces container
- ASiC XAdES → Signed artifact: produces container
