SiVa
Signature Verification Service
Install / Use
/learn @open-eid/SiVaREADME
Signature Verification Service
SiVa is digital signature validation web service that provides JSON API to validate following file types:
- Estonian DDOC containers
- Estonian BDOC containers with TimeMark and TimeStamp signatures
- Estonian ASiC-S containers with time stamp tokens
- ETSI standard based ASiC-E and ASiC-S containers
- ETSI standard based XAdES, CAdES and PAdES signatures
- ETSI standard based XAdES signatures with datafiles in hashcode form
Libraries used in validation services
Below is list of Java libraries used for validation:
- DigiDoc4J - is used to validate DDOC and BDOC digital signature containers.
- DigiDoc4J DSS fork - to validate all other digitally signed files.
Requirements
These are minimum requirements to build and develop SiVa project:
- git - to easily download and update code. You can download git here
- Java JDK 17 - to compile and run SiVa applications.
- IDE - to develop SiVa. We recommend to use JetBrains IntelliJ
- 2 GB of RAM the RAM requirement is here because when building the project the integration tests take up a lot of memory
- Optionally You can also install Maven but it is not needed because SiVa project uses Maven wrapper to install maven
How to build
Using Maven Wrapper
Recommended way of building this project is using Maven Wrapper. Run following command:
./mvnw clean install
After that, you can optionally create an image for Docker:
./mvnw spring-boot:build-image -pl siva-parent/siva-webapp -DskipTests
How-to run
With docker (for testing only)
Before continuing, the siva-demo-application docker image must be built and available on Docker as siva-demo-application:latest.
Configuration note: For configuration changes create an
application.ymlfile inside thedockerdirectory and define all required configuration overrides there.
The following command will run siva-webapp along with siva-demo-application:
docker compose up
To remove all containers run:
docker compose down -v --remove-orphans
Now SiVa itself is accessible http://siva.localhost:8080/ and siva-demo-application http://siva-demo.localhost:9000/. Logs for all running containers can be viewed at http://localhost:11080.
Without docker
SiVa project compiles 1 fat executable JAR file that You can run after successfully building the project by issuing below command:
Starting the SiVa REST webservice. NB! X.X.X denotes the version you are running.
java -jar siva-parent/siva-webapp/target/siva-webapp-X.X.X-exec.jar
The SiVa webapp by default runs on port 8080.
Easiest way to test out validation is to start SiVa Demo Application without docker.
WAR and Tomcat setup for legacy systems
NOTE: Each SiVa service must be deployed to separate instance of Tomcat to avoid Java JAR library version conflicts.
To build the WAR file use helper script with all the correct Maven parameters.
./build-war.sh
Copy built WAR file into Tomcat webapps directory and start the servlet container. NB! X.X.X denotes the version you are running.
cp siva-parent/siva-webapp/target/siva-webapp-X.X.X.war apache-tomcat-7.0.70/webapps
./apache-tomcat-7.0.77/bin/catalina.sh run
How-to set WAR deployed SiVa application.properties
SiVa override properties can be set using application.properties file. The file can locate anywhare in the host system.
To make properties file accessible for SiVa you need to create or edit setenv.sh placed inside bin directory.
Contents of the setenv.sh file should look like:
export CATALINA_OPTS="-Dspring.config.location=file:/path/to/application.properties"
How-to run tests
Unit test are integral part of the SiVa code base. The tests are automatically executed every time the application is built. The build will fail if any of the tests fail.
To execute the tests from command line after application is built use:
./mvnw verify
How to run system tests
System tests can be found here, and executing them requires running SiVa Web application instance.
PS! Some tests are expected to fail as they need a special test LOTL.
How to run load tests
Load tests are available in the SiVa-perftests repository.
Open source software used to build SiVa
Full list of open source Java libraries used to build SiVa can be found in our Open Source Software used page
Documentation
Read SiVa documentation
Related Skills
node-connect
351.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
