UANATACA VOL API
UANATACA VOL API DOCUMENTATION (v1)
What it is
The high-performance solution for electronic signature Validation and Verification service, providing detailed information of the result.
Uanataca VOL API is a turnkey system that can be easily integrated with any business application or web thanks to its high-level web API based on the http RESTful paradigm.
How it works
The solution is given with VOL Optimizer that is a server system exposing http RESTful APIs by means of which, business applications are enabled to require the electronic signature validation of documents.
VOL Optimizer performs the most computationally expensive workload of the validation and verification process, thus reducing the data traffic on the local network. The signed documents to be validated are processed in the customer business layer and are not send to Uanataca Services.
The system performs the validation and verification on all the signatures contained in a document, including timestamps. The validation consists on:
Verify that the certificate is issued by a Trusted Service Provider (TSP).
Verify that the certificate was valid at the time of signing. It means that the certificate was not expired or revoked at that moment.
Verify the integrity of the document, verifying that no changes were done to the document after the signature.
The verification of the digital certificate is carried out through OCSP and CRL queries to the corresponding TSP issuer.
Configuration
VOL Optimizer is supplied as a Docker image.
Hardware requirements
CPU: modern multicore (minimum 4 core)
RAM: 8GB
HDD: 200 GB
VOL Optimizer on Docker
This configuration requires a server with a Linux CentOS operating system.
STEP 1: Install Docker and Docker-Compose.
Docker
Run the following commands in this order.
sudo yum update -y
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
Docker-Compose
Run the following commands in this order.
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Run command docker-compose version to check the installation. The outcome should show this information:
STEP 2: Extract and copy VOL Optimizer zip content to the server.
Extract all vol_optimizer_docker.zip
content in a local folder.
Move VOL Optimizer folder to the path /opt in the server.
The outcome should look like this:
STEP 3: Load One-Shot Docker images.
Run the following commands:
cd /opt/vol_optimizer
docker image load -i vol-api.tar.gz
docker image load -i vol-gui.tar.gz
docker image load -i vol-web.tar.gz
Remove image files:
STEP 4: Launch the service.
Run this command:
STEP 5: Service settings.
See service settings configuration section.
Service settings
Uanataca VOL exposes a custom website to validate documents. The website requires an SSL certificate and Billing credentials. Both requirements are also needed to use the service through API.
Requirements:
Billing credentials for Uanataca production environment.
SSL Certificate (.cer) and key (.key) files.
STEP 1: SSL Certificate.
The SSL certificates are required to expose the validation web. If the web is not exposed, the SSL certificate demo files provided in the vol_optimizer_docker.zip
can be used.
Consider the following server path:
Please copy SSL certificate files here. If you don't have your own certificate, the provided demo certificate can be used. They are located at /opt/vol_optimizer/demo_SSL_certificate in the server.
STEP 2: Billing credentials.
Copy vol-gui-passwd.tar
file to the path /home/bit4id/ in the server. Extract the content:
Run the script to insert your client Billing credentials (username and password):
STEP 3: Launch the service.
Run the following commands:
Check service status:
All services must be UP.
STEP 4: Contact Uanataca support team.
The last step before document validation requires additional settings that may vary for each client server. Please contact our support team for assistance.
Endpoint URLs
The URL exposing the API is composed as follows:
host
The {host} is the IP or domain from the VOL Optimizer.
resource
It is the name of the resource of our interest.
Each resource can also have path parameters and sub-resources that are defined in the API Reference below.
This is an example of endpoint:
Authentication
VOL service requires authentication with the provided Billing credentials.
Each endpoint requires an authentication header before performing the requested action. The header must containt the type (Basic) and a Base64 string that contains the Billing credentials in the format username:password in Base64.
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
This is an example with cURL:
JSON validation response
The validation response is a JSON object containig the following schema:
where the objects attributes are:
report
Contains general information about the signatures.
now
[string]: date & time from the verificationtype
[string]: electronic signature profile under the European eIDAS regulationEnum: [PAdES, XAdES, CAdES]
document_uri
[string]: uploaded document uriannotations
[array]: array containing data objects from each signature and timestamp
Signature object:
type
[string]: signatureEnum: [signature, timestamp]
name
[string]: signer's namereason
[string]: reason of the signaturelocation
[string]: location where the signature is performedsignature_time
[string]: date & time of the signaturesignature
[object]: See signature structure
Timestamp object:
type
[string]: timestampEnum: [signature, timestamp]
tst_info
[object]: timestamp informationcontent_digest
[string]: timestamp content digestsignature
[object]: See signature structure
errors
List of errors found in the validation process. Each error is composed by:
where
[string]: reference where the error was foundwhat
[string]: identifier of the error message. See list of messages
data
Report and document information.
lang
[string]: date & time from the verificationupload_time
[string]: date & time from the document uploadoutformat
[string]: response formatEnum: [json]
filename
[string]: uploadded file nameheaders
[object]: header used in the HTTP POST requestdocument_hash_type
[string]: hash algorithm usedtemplate
[string]: validation response templateEnum: [report]
report_uri
[string]: path to retrieve the validation reportverification_date
[string]: date & time from the validation (optional)documentid
[string]: document identifierdocument_hash
[string]: complete document hash regarding the algorithm used
messages
List of message descriptions. The complete list is included in every validation response.
TIMESTAMP_VERIFIED: "The document has not been modified after the application of the timestamp",
INVALID_CONTENT_TYPE_ATTRIBUTE: "Digital signature attribute is not compliant (contentType)",
MULTIPLE_SIGNING_TIME_ATTRIBUTE: "Verification date is declared multiple times (signingTime)",
REVOKED: "Certificate revoked",
SIGNATURE_TIMESTAMP_OK: "Valid timestamp",
UNKNOWN_REVOCATION_INFO: "Revocation information is not available",
UNSUPPORTED_ALGORITHM: "Unsupported signing algorithm",
UNTRUSTED: "Untrusted CA certificate",
CE2011130EU: "Signature complies with EC Decision 2011/130/EU",
NOT_YET_VALID: "Certificate is not yet valid",
NOTCE2011130EU: "Signature not complies with EC Decision 2011/130/EU",
UNKNOWN_ISSUER: "Certificate issued by an unknown authority",
CONTENT_TIMESTAMP_OK: "Valid timestamp",
INVALID_CERTIFICATE_REF: "References to certificates are incorrect",
SIGNATURE_TIMESTAMP_ERROR: "Invalid timestamp",
SIGNING_KEY_LESS_THAN_2048_BITS: "The signature key has a length of less than 2048 bits",
NO_CA_BASIC_CONSTRAINTS: "Certificate root without attributes of CA",
INDETERMINATE_VALIDATION_TIME: "Verification date is undetermined",
SIGNED_DATA_NOT_FOUND: "Signed data is not present",
NO_OCSP_SIGNING_USAGE: "Certificate used to sign OCSP response is not suitable for the purpose",
SIGNATURE_VERIFIED: "The document has not been modified after signature",
INVALID_TIMESTAMP: "Invalid timestamp",
CONTENT_TIMESTAMP_ERROR: "Invalid timestamp",
NO_CERTIFICATE_SIGNING_USAGE: "Certificate issued by a CA not suitable for the purpose",
XML_SCHEMA_MISMATCH: "The XML file does not respect the XAdES/XMLDSIG schema",
SIGNING_CERTIFICATE_V1: "The reference to the signature certificate uses an obsolete format (signingCertificate 1)",
NO_TIMESTAMPING_USAGE: "The TSA certificate used to issue the timestamp is not suitable for the purpose",
NO_CRL_SIGNING_USAGE: "Certificate used to sign the CRL is not suitable for the purpose",
INVALID_SIGNATURE: "Invalid digital signature",
TRUSTED: "Trusted CA certificate",
SUSPENDED: "Certificate suspended",
INVALID_SIGNING_CERTIFICATE_REF: "Reference to the signature certificate is incorrect",
WEAK_HASHING_ALGORITHM"The document digest was calculated using an weak algorithm",
NO_SIGNING_CERTIFICATE: "Signing certificate is not present",
EXPIRED: "Certificate expired",
NO_SIGNING_CERTIFICATE_REF: "Signing certificate reference is not present",
SIGNING_CERTIFICATE_REF_FOUND: "Reference to the signature certificate is valid"
validation
Contains validations results for each signature and timestamp.
signatures
[array]: contains the results of the signtaure validations. See signature validation structuretimestamps
[array]: contains the results of the timestamp validations. See timestamp validation structureresult
[string]: validation resultEnum: [SUCCESS, ERROR]
profile
Profile used in the validation.
type
[string]: electronic signature profile, under the European eIDAS regulation, used in the validationEnum: [PAdES, XAdES, CAdES]
name
[string]: profile namedescription
[string]: profile description
Example of a validation response:
Signature validation structure
data
[string]: JSON path where the signature is locatedtype
[string]: signature or timestampEnum: [signature]
status
[object]: validation status for each signature and timestamp included in a signature.time
[string]: date & time from the verificationtimestamps
[array]: timestamps inluded in a signature. See timestamp validation structurecertificate_refs
[object]: JSON path where the certificates used for signing are located, ordered by the version numbercertificates
[array]: list of all certificates usedsigning_certificate
[string]: certificate used in this signatureindex
[number]: index of this signature in the list of all file signature, starting from 0name
[string]: signer's namereason
[string]: reason of the signaturelocation
[string]: location where the signature is performedlevel
[string]: electronic signature level under the European eIDAS regulationEnum: [PADES-BASIC, PADES-T, PADES-LT, XAdES-BASIC, XAdES-T, XAdES-XL, CAdES-BASIC, CAdES-T]
Timestamp validation structure
data
[string]: JSON path where the signature is locatedtype
[string]: signature or timestampEnum: [timestamp]
status
[object]: validation status for each signature and timestamp included in a signature.time
[string]: date & time of the timestamptst_info
[string]: timestamp informationcertificate_refs
[object]: JSON path where the certificates used for signing are located, ordered by the version numbercertificates
[array]: list of all certificates usedsigning_certificate
[string]: certificate used in this signatureindex
[number] : index of this signature in the list of all file signature, starting from 0
Signature structure
version
[number]: JSON path where the signature is locateddigest_algorithm_identifiers
[array]:signatures
[array]: contains information about signature algorithm used and the digestscertificates
[array]: contains all the information from the signer certificatescrls
[array]: contains all the information from the CRLsocsps
[array]: contains all the information from the OCSP certificates
Postman collection
A postman collection is available as a support for a quick start.
It is only required to edit host
variable in Postman environment with the IP or domain of VOL Optimizer.
VOL Postman collection download
API Reference
https://cdn.developers.uanataca.com/vol/vol.html