API: Método relacionado con la extensión de firma
El proceso de firma en Viafirma Fortress, constará de los procesos de:
- Autenticación del cliente
- Solicitud de extensión de firma
- Obtención del documento/s extendido/s firmado/s
En los siguientes apartados describiremos los métodos disponibles en Viafirma Fortress, asociado a las operaciones de extensión de firma:
Solicitud de firma
Nota: Para acceder a estos métodos es necesario tener un token de acceso (access_token) obtenido mediante una petición de autenticación y autorización con un scope de tipo client y un grant_type de tipo client_credentials, para lo que hay que seguir los pasos indicados en esta sección de la documentación.
Solicitud de extensión de firma
Uso del servicio
Método: POST
URL: {viafirma_fortress_url}/api/v1/signature/extend
Donde:
viafirma_fortress_url: URL base de la implementación de Viafirma Fortress, por ejemplo https://sandbox.viafirma.com/fortress o https://fortress.viafirma.com/fortress
Además, en la cabecera HTTP de la petición POST debe incluirse el token de acceso (access_token) de la siguiente forma:
Authorization: Bearer {access_token}
Ejemplo:
Método: POST
URL: https://fortress.viafirma.com/fortress/api/v1/signature/extend
Header de la petición: Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
Parámetros del servicio
Este servicio recibe por parámetros la configuración de la extensión de firma empleada por cada documento a extender, donde se indica, entre otras cosas, el tipo de firma al que se desea extended el documento firmado, el documento a extender …
Los parámetros que se reciben (en formato application/json) tienen la siguiente forma:
{
"extendSignatureConfigurations": [
{
"document": {
"bytesB64": "JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQ...",
"name": "contrato.pdf"
},
"signatureType": "PADES_LTA",
"signatureAlgorithm": "RSA_SHA256",
"packaging": "ENVELOPED",
"tsa": {
"type": "URL",
"url": "https://testservices.viafirma.com/via-tsa/tsa"
}
}
]
}
Nota: Los detalles de los parámetros padesConfiguration, xadesConfiguration, tsa y policy se muestran más adelante.
Donde:
| Parámetro | Tipo | Descripción |
|---|---|---|
| userCode | string | [OPCIONAL] Usuario que debe extender la firma, si el sistema cliente no informa dicho valor, Viafirma Fortress no solicitará el usuario a emplear en el proceso de extensión de firma |
| extendSignatureConfigurations/document/name | string | Nombre documento a extender |
| extendSignatureConfigurations/document/bytesB64 | string | Documento a extender, codificado en Base64 |
| extendSignatureConfigurations/document/url | string | Url ocumento a extender |
| extendSignatureConfigurations/signatureType | string | Tipo de firma. Valores disponibles: - CADES_T- CADES_LT- CADES_LTA- PADES_T- PADES_LT- PADES_LTA- XADES_T - XADES_LT - XADES_LTA |
| extendSignatureConfigurations/packaging | string | Envoltura de la firma. Valores disponibles: - ENVELOPED- ENVELOPING- DETACHED |
| extendSignatureConfigurations/original/name | string | [Solo para envolturas DETACHED] Nombre documento original a extender |
| extendSignatureConfigurations/original/bytesB64 | string | [Solo para envolturas DETACHED] Documento original a extender, codificado en Base64 |
| extendSignatureConfigurations/original/url | string | [Solo para envolturas DETACHED] Url documento original a extender |
Configuración TSA
Para los tipos de firma que incluyan sellado de tiempo, se debe informar la configuración de la TSA.
{
"url": "http://tsa.example.com/",
"user": "tsa_user",
"password": "tsa_pass",
"type": "USER",
"certificateCode": "tsa_certificate_code"
}
| Parámetro | Tipo | Descripción |
|---|---|---|
| type | string | Tipo de TSA. Si requiere autenticación con usuario y password, usaremos el valor USER, si requiere autenticación con certificado CERTIFICATE, si requiere autenticación con certificado por TSL CERTIFICATE_TLS, si no, el valor URL |
| user | string | Usuario para la autenticación en la TSA (solo para type con valor USER) |
| password | string | Contraseña para la autenticación en la TSA (para los type con valor USER o CERTIFICATE_TLS) |
| url | string | URL de de la TSA |
| certificateCode | string | Código del certificado para la autenticación en la TSA (para los type con valor CERTIFICATE o CERTIFICATE_TLS) |
Configuración de políticas
Para que la firma tenga una política y se la pueda considerar de tipo EPES, podemos definir los valores de la misma con esta configuración.
{
"id": "102039485-10283757-102837575",
"description": "Sample policy",
"digestAlgorithm": "SHA256",
"digestValueB64": "JVBERi0xLjMKJcTl8uXlRU9GC",
"contentHintsDescription": "Lorem ipsum dolor sit amet",
"contentHintsType": "Lorem ipsum dolor sit amet"
}
| Parámetro | Tipo | Descripción |
|---|---|---|
| id | string | Identificador de la política |
| description | string | Descripción de la política |
| digestAlgorithm | string | Algoritmo de cifrado. Posibles valores: - SHA1- SHA224- SHA256- SHA384- SHA512- RIPEMD160- MD2- MD5 |
| digestValueB64 | string | Valor (codificado en Base64) |
| contentHintsDescription | string | Descripción de la ayuda |
| contentHintsType | string | Tipo de ayuda |
Respuesta del servicio
La respuesta de este servicio vendrá dada (en formato application/json) de la siguiente forma:
{
"ref": "d8e3d98dc20e46188fd067df28048934",
"bytesB64": "MIMBKM8GCSqGSIb3DQEHAqCDASi/MIMBKLoCAQUxDzANBglghkgBZQMEAgEFADCC1QsGCSqGSIb3DQEHAaCC1PwEgtT4JVBERi0xLjMKJcTl8uXrp..."
}
Donde:
| Parámetro | Tipo | Descripción |
|---|---|---|
| ref | string | referencia de la extensión |
| bytesB64 | string | Base 64 del documento extendido |
Errores del servicio
Los errores devueltos por el servicio (devueltos en formato application/json) tienen el siguiente aspecto:
{
"error": "error_code",
"error_description": "error_description"
}
Donde:
| Parámetro | Tipo | Descripción |
|---|---|---|
| error | string | Código del error |
| error_description | string | Descripción del error |
Posibles errores:
| Código de error | Error |
|---|---|
| invalid_request | Petición incorrecta. Alguno de los parámetros de entrada no es correcto. (HTTP Status: 400) |
| invalid_token | El access_token utilizado no es correcto (HTTP Status: 401) |
results matching ""
No results matching ""