Signature Gateway demo application

August 25, 2026 · View on GitHub

Co-funded by the European Union

Signature Gateway demo application

Demo application is provided to study the flows and integration of Signature Gateway. NB! This is not meant to be used in production!

Functionality:

  • Authorization
  • Container conversion to and from HASHCODE form
  • Mobile-ID signing
  • ID card signing (with Web eID in front end)
  • Smart-ID signing
  • Signature validation
  • ASiC container upload and augmentation

How to set up

SiGa demo application is not a standalone system, it requires either the SiGa application to already be running on your machine or pointing the demo app towards sample APIs.

Preconditions:

  1. Java JDK 17 - to compile and run SiGa demo
  2. SiGa parent project - Can be found here

Option 1: Running SiGa locally with Docker

  1. Docker must be installed and running.
  2. Build SiGa demo application docker image:
./mvnw clean spring-boot:build-image
  1. Then, follow the "Running SiGa with Docker" instructions at SiGa webapp to run both apps at the same time.

If everything was successful, open up the browser at https://siga-demo.localhost:9443/.

Option 2: Running standalone, against Docker Compose or an external SiGa instance

  1. Build this project:
./mvnw clean install
  1. The default application.yml does not set any of the properties below — they're either environment-specific or a secret, so every deployment target must supply them itself rather than inherit a bundled default. Spring Boot supports several ways to do this — see Spring Boot's Externalized Configuration guide for the full picture. The example at point 3 uses -D system properties for simplicity.
ParameterMandatoryDescriptionExample
siga.api.uriYSiGa server URL.https://siga.localhost:8443
siga.api.trust-storeYTruststore the demo app uses to trust the SiGa server's TLS certificate. Generated alongside the keystore below for the Docker Compose case.file:/path/to/SiGa/docker/tls/siga-demo/siga-demo.truststore.p12
siga.api.trust-store-passwordYPassword for the truststore above.changeit
siga.api.trust-store-typeNTruststore format for siga.api.trust-store above. Defaults to the JVM's own KeyStore.getDefaultType() (PKCS12 on modern JDKs) if unset — only needs overriding for a non-PKCS12 truststore.PKCS12
siga.client.hmac.service-uuidYHMAC client identifier issued by SiGa — see the SiGa Authorization wiki.a7fd7728-a3ea-4975-bfab-f240a67e894f
siga.client.hmac.shared-signing-keyYShared HMAC signing key for the client above.746573745365637265744b6579303031

To point at an external or sample SiGa API instead of a local Docker Compose instance, substitute your own siga.api.uri, trust-store, and HMAC credentials for the example values above.

  1. Run the built jar with the required overrides (adjust the docker/tls/... paths below to wherever you checked out the SiGa parent project):
java -Dserver.port=9443 \
     -Dserver.ssl.enabled=true \
     -Dserver.ssl.key-store=file:/path/to/SiGa/docker/tls/siga-demo/siga-demo.localhost.keystore.p12 \
     -Dserver.ssl.key-store-password=changeit \
     -Dserver.ssl.key-alias=siga-demo.localhost \
     -Dsiga.api.uri=https://siga.localhost:8443 \
     -Dsiga.api.trust-store=file:/path/to/SiGa/docker/tls/siga-demo/siga-demo.truststore.p12 \
     -Dsiga.api.trust-store-password=changeit \
     -Dsiga.client.hmac.service-uuid=a7fd7728-a3ea-4975-bfab-f240a67e894f \
     -Dsiga.client.hmac.shared-signing-key=746573745365637265744b6579303031 \
     -jar target/siga-demo-application-X.X.X.jar

Now application is accessible at https://siga-demo.localhost:9443/ (or plain http://localhost:8080/ if server.port and server.ssl.enabled are left unset).

SiGa demo configuration

Example application.yml file can be seen here. Common Spring Boot properties are described here.

ParameterMandatoryDescriptionExample
spring.servlet.multipart.max-file-sizeNMax file size.20MB
spring.servlet.multipart.max-request-sizeNMax request size.35MB

How to use

Before every signing the webpage needs to be reloaded and files uploaded.

With Docker setup, Signature Gateway is in TEST mode. Meaning it is possible to sign only with TEST ID-card, TEST Mobile-ID or TEST Smart-ID.

  • TEST ID-cards can be ordered here.
  • TEST Mobile-ID numbers can be found here.
  • TEST Smart-ID numbers can be found here.