Funcionalidades del Motor SSigner
Tipos de Firma
| Tipo | Código | Descripción |
| PAdES-B | Sin TSA | Soportado (por defecto) |
| PAdES-BT | Con TSA | Soportado |
| CAdES-B | Sin TSA | Soportado |
| PAdES-LT | TSA y DSS | Soportado |
| PAdES-LTA | TSA, DSS y Document Timestamp | Soportado |
| CAdES-BT | Signature Time Stamp | Soportado |
| CAdES-LT/LTA | Valores de validación/Archive Time Stamp | No soportado |
| PKCS7-B | CMS en PDF, sin TSA | Soportado |
| PKCS7-BT | CMS en PDF con TSA | Soportado |
| PKCS7-LT | CMS en PDF con TSA y DSS | Soportado |
| PKCS7-LTA | CMS en PDF con TSA, DSS y Document Timestamp | Soportado |
| XAdES-B | Sin TSA, firma XML | En desarrollo, rama xades-dss |
| XAdES-BT | Signature Time Stamp, firma XML | En desarrollo, rama xades-dss |
Los nombres PKCS7-LT y PKCS7-LTA describen capacidades del motor sobre un PDF con adbe.pkcs7.detached; no representan perfiles ETSI PAdES.
XAdES (firma de XML): el soporte para XAdES-B y XAdES-BT está terminado y probado (con certificados reales y TSA real), pero todavía vive en la rama xades-dss — no está en main ni en el jar publicado. Usa DSS (github.com/esig/dss) para la firma XML, con BouncyCastle 1.84 aislado (relocado a un paquete propio) para no chocar con el BouncyCastle 1.69 que usa el resto del motor (iText, CAdES). Para probarlo, compila desde esa rama:
git clone https://github.com/saeta-sac/ssigner-motor.git
cd ssigner-motor
git checkout xades-dss
cd dss-xades-shaded && mvn clean install && cd ..
mvn clean package
El jar resultante (target/saeta-signer-1.0.0-all.jar) soporta firma.perfil=XAdES-B y XAdES-BT además de todo lo que ya soporta main. Ver Configuración para las propiedades necesarias.
Tipos de Repositorio de Claves
| Tipo | Descripción |
Windows-My | Certificado del almacén de Windows |
PKCS11 | HSMs y tokens USB |
PKCS12 | Archivos .p12/.pfx |
Operaciones de Firma
Proceso de 3 Fases (Diferido)
graph LR
A[Documento] --> B[crearFirmaEnBlanco]
B --> C[.prefirma / .prefirma.sha256]
C --> D[firmar hash]
D --> E[.prefirma.firmado / PKCS#7]
E --> F[insertarHashFirmado]
F --> G[PDF Firmado]
| Operación | Código | Descripción |
| Crear campo en blanco | fb | Crea campo de firma y genera hash SHA256 |
| Firmar hash | f | Firma el hash con la clave privada |
| Insertar hash firmado | ihf | Inserta la firma PKCS#7 en el PDF |
Funcionalidades Principales
1. Firma Digital de PDF
- Creación de campos de firma en blanco
- Firma de hash SHA256/SHA384/SHA512
- Inserción de hash firmado en documentos
- Soporte para múltiples campos de firma por documento
- Posicionamiento de firmas con coordenadas
- Soporte para etiquetas en PDFs
2. Validación de Certificados
- Validación de cadena de certificación
- Verificación OCSP (Online Certificate Status Protocol)
- Verificación CRL (Certificate Revocation List)
- Validación contra TSL
- Validación de algoritmo (rechaza MD5, SHA1)
- Validación de longitud de clave (RSA >= 2048 bits)
- Soporte de proxy para solicitudes de red
- Límite de validación en cadena de certificados
3. Apariencia de Firma
- 9 estilos diferentes de visualización
- Texto personalizable con placeholders
- Configuración de fuente (Helvetica, Times-Roman, Courier)
- Tamaño de fuente configurable
- Imagen de firma (firma escaneada)
- Imagen de fondo (estilo 6)
- Código QR y código de barras en la glosa
- Alineación horizontal y vertical del texto, imagen y campo
- Padding personalizable
- Espaciado entre texto e imagen
- Mantener proporción de imagen
- Modo de ajuste de imagen: escalar, recortar, ajustar
- Recuadro con información de verificación
- URL de verificación personalizable
- Contenido con soporte para negrita y código
- Variables:
{{GLOSA_URL}}, {{GLOSA_CODIGO}} - Código QR para verificación
- Código de barras opcional
5. Features Adicionales
- Time Stamping Authority (TSA)
- Long Term Validation (LTV)
- Firma detachada (directa sin fases)
- Firma CAdES para archivos no PDF
- Cache de archivos y certificados
- Logging estructurado con niveles configurables
- Conversión automática de coordenadas
- Proxy support para validación OCSP/CRL/TSL
Códigos de Error
| Código | Significado |
| 0 | Éxito |
| 1 | Error general |
| 2 | Parámetros incorrectos |
| 3 | Archivo no existe |
| 4 | Alias no encontrado |
| 5 | Excepción |
| 10-21 | Errores de certificado |
| 30-34 | Errores de CRL |
| 40-41 | Errores de OCSP |
| 50-51 | Errores de TSL |
| 60-62 | Errores de LTV |