Saltar a contenido

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

4. Glosa (Información adicional)

  • 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